Afleveringen
-
RJJ Software's Software Development Service
This episode of The Modern .NET Show is supported, in part, by RJJ Software's Podcasting Services, whether your company is looking to elevate its UK operations or reshape its US strategy, we can provide tailored solutions that exceed expectations.
Show Notes"So a lot of these features are new features that probably weren't there when you first made your package. But I'd like to just briefly talk through what each of these are and talk about how to fix them. So before jumping into the complexity of those red Xs, let's just take a little step back and talk about how to edit what appears in a NuGet package. Because it might be a little bit confusing for someone who's brand new."— Scott Harden
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 not your host: Jamie. I'm Delilah and I will be recording the intro for this episode because Jamie is suffering with a throat infection.
In this episode, Scott Harden joined us for the final part in a special three part series. This final part of our conversation takes the major points from the previous two episodes and applies them specifically to authoring NuGet packages.
We start by discussing what NuGet packages are, cover the NuGet Package Explorer (which you can run in your browser, by the way), and finally wrap everything up by taking a look at a PR that Scott had provided for one of Jamie's open-source packages: OWASP Headers.Core.
"So in this case, it's like, well, okay, what icon do we use? A lot of developers are like, 'I'm a programmer. I'm not a graphic designer.' But—I just want to encourage everyone. It doesn't matter. First of all, no one's downloading your NuGet package because you're a graphic designer. Some of the most popular NuGet packages have really, really, really simple icons. And I'm not going to call any by name but it's kind of a joke where a lot of people make a really simple one-off icon when their project gets small and they kind of feel like they can never change it later because the project got big, so you have a lot of really great projects with really simple icons, so don't be intimidated by that"— Scott Harden
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.
My voice was created using Generative AI.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-7/modern-net-nuget-packaging-with-scott-harden
Scott's Links: scottplot.net swharden.com GitHub LinkedIn Jamie's Public NuGet Packages: OwaspHeaders.Core ClackMiddleware OnionArch.Mvc Useful Links Package authoring best practices licenses.nuget.org SPDX License List Microsoft.SourceLink.GitHub Scott's PR for OwaspHeaders.Core: "Improve NuGet package metadata" Inkscape ScottPlot.NET: GitHub NuGet scottplot.net The charts that Scott was referring to when talking about downloads per day, can be seen here Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in Touch: Via the contact page Joining the DiscordRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
RJJ Software's Software Development Service
This episode of The Modern .NET Show is supported, in part, by RJJ Software's Podcasting Services, whether your company is looking to elevate its UK operations or reshape its US strategy, we can provide tailored solutions that exceed expectations.
Show Notes"I don't want to go into the details right now, but for the listeners, I will say that we are right in the middle of an explosive situation right now with some WordPress drama. WordPress and WP Engine are experiencing a lot of the fallout, kind of related to what we talked about in the last episode, where you start out with some good intentions and then you get in a situation where both sides kind of feel burned. And I'm not going to say that there's a perfect solution out there, But I do think that this frequent check-ins and asking, you know, "is this good for me and what needs to change for this to be good for my life?" is important."— Scott Harden
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 not your host: Jamie. I'm Delilah and I will be recording the intro for this episode because Jamie is suffering with a throat infection.
In this episode, Scott Harden joined us to talk more about open-source, software licensing, and a little on some of the most recent NuGet package updates that .NET developers should know about.
It's important to note, Scott and Jamie talked about the WordPress controversy which was still unfolding as we recorded (which on October 19th, 2024). They brought it up not to make fun of WordPress or to add fuel to the flames, but to talk about the fact that it highlighted Scott's point about checking in with yourself regularly, as an open-source developer, about whether you're getting what you want from your public repos.
Whilst talking about open-source development and licensing, Scott brought up a question on our collective and individual digital legacies.
"And this is kind of a startling topic to bring up, but what if you just disappeared tomorrow? Because people just leave because they have some medical situation or some life situation, or they die. And this happens. This happens in software. We'll talk about some specific examples in a minute. But, you know, if you disappear tomorrow, it's interesting to think about kind of what your digital legacy would be. And, you know, you could have left this thing behind in a way that it could have been used by everyone or anyone."— Scott Harden
This episode has a lot of resources in the accompanying show notes, so if you're listening along in a podcast player make sure to head to the website (there'll be a link). That way you don't miss out on all the wonderful things Scott and Jamie talked about.
As a form of trigger warning, at around the 58 minute mark Scott talks about how his own journey with cancer brought the idea of his digital legacy to the forefront for him. Both Scott and Jamie also talk about the late Abel Wang and Pieter Hintjens. And they talk about other examples of developers who are very public with their health struggles: Jeremy Likness and (previous guest of the show) Jon Smith, who suffer with Alzheimer's disease and dementia respectively.
We understand completely if you want to skip this entire section. But we also feel that there are very important points raised whilst talking about these, less cheery, matters. This conversation makes up the bulk for the final 10-15 minutes of the episode. Aside from a teaser for the next part (which is all about NuGet packages), you won't miss anything .NET specific if you choose to skip this part.
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.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-7/open-source-and-our-digital-legacies-with-scott-harden/
Scott's Links: scottplot.net swharden.com GitHub LinkedIn Jamie's Public NuGet Packages: OwaspHeaders.Core ClackMiddleware OnionArch.Mvc Useful Links GNU Terry Pratchett OWASP Secure Headers Project GitHub sponsors Jamie on Coffee and Open Source with Isaac Levin The WordPress vs VP Engine drama, explained What we know about the xz Utils backdoor that almost infected the world .NET Foundation Finding Strength in Weakness by Jeremy Likness How to update a NuGet library once the author isn't available by Jon Smith Entity Framework Core with Jon Smith A protocol for dying Get Busy Living with Abel Wang ScottPlot.NET: GitHub NuGet scottplot.net The charts that Scott was referring to when talking about downloads per day, can be seen here Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in Touch: Via the contact page Joining the DiscordRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
Zijn er afleveringen die ontbreken?
-
RJJ Software's Software Development Service
This episode of The Modern .NET Show is supported, in part, by RJJ Software's Podcasting Services, whether your company is looking to elevate its UK operations or reshape its US strategy, we can provide tailored solutions that exceed expectations.
Show Notes"One of the projects that I work on right now that's probably one of my more successful ones, It's a scientific data visualization library for .NET. It's called ScottPlot. The name is silly. It's because when I made it, I thought I was the only person going to be using it. And then some other people started using it and that wasn't totally unexpected. But now it's about a million and a half installs on NuGet. I think it has like 5,000 stars on GitHub. It's really cool just to watch this thing grow."— Scott Harden
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 not your host: Jamie. I'm Delilah and I will be recording the intro for this episode because Jamie is suffering with a throat infection.
In this episode, Scott Harden joined us for the first of three episodes on .NET, open source, and NuGet. This part of the conversation is all about what Scott calls "The Spirit of Open Source in a Modern .NET World." This is the background information on why Scott (and Jamie) believe that developers should look to creating open source works, putting them out there, and gathering feedback from people. Not only will it enhance your technical skill set (and very quickly), but it will also allow you to get experience at failing in a safe space: in public.
"Now, humans evolved to like helping people in our in-group. And I think it means a lot that we treat anonymous strangers on the Internet, or we can treat them. Obviously, this can go wrong. But we can treat them as part of our in-group. Like, "hey, we are all in this technical world together. We are struggling. Let's figure this out together." And that bridge of trust and effort and you're sharing your knowledge with another person, it is such a positive experience all around the table"— Scott Harden
This episode has a lot of resources in the accompanying show notes, so if you're listening along in a podcast player make sure to head to the website (there'll be a link). That way you don't miss out on all the wonderful things Scott and Jamie talked about.
And remember, this is just part one. In the next two parts, Scott and I talk about creating NuGet packages, ensuring their safety and security, and how to be a good citizen of the open source community. Talk about a festive gift for you all.
And definitely go ahead and check out Scott's work and writings. He's a really interesting person, an amazing open source contributor, and an all-round great person.
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.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-7/the-spirit-of-open-source-in-a-modern-net-world-with-scott-harden/
Scott's Links: scottplot.net swharden.com GitHub LinkedIn Useful Links Job crafting Left-Pad incident The story behind colors.js and faker.js What we know about the xz Utils backdoor that almost infected the world Hello, Duende Double-precision floating-point format Dave Farley Sigstore Add support for sigstore as signing method for NuGet packages The Primeagen Coding Blocks Some episodes of this show focusing on App Security and dependency management The Risks of Third Party Code With Niels Tanis Application Security with Tanya Janca Building Secure Software: Unveiling the Hidden Dependencies with Niels Tanis Managing Dependencies with M. Scott Ford Breaking Up with Tech Debt: A Love Story with M. Scott Ford Books that Jamie gives to interns: The Life-Changing Magic of Tidying Up by Marie Kondo Start With Why by Simon Sinek Essentialism: The Disciplined Pursuit of Less by Greg McKeown ScottPlot.NET: GitHub NuGet scottplot.net The charts that Scott was referring to when talking about downloads per day, can be seen here Code Licenses mentioned (in order): MIT CC0 Apache 2 L-GPL v3 WTFPL Programming languages Jamie mentioned (in order) Go Odin Zig Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in Touch: Via the contact page Joining the DiscordRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
RJJ Software's Software Development Service
This episode of The Modern .NET Show is supported, in part, by RJJ Software's Podcasting Services, whether your company is looking to elevate its UK operations or reshape its US strategy, we can provide tailored solutions that exceed expectations.
Show Notes"So part of what Resilient Programming is about and what the framework does is that it kind of like tries to provide a nice abstraction, a developer-friendly abstraction for implementing distributed systems."— Thomas Sylvest
Welcome friends to The Modern .NET Show; the premier .NET podcast, focussing 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, Thomas Sylvest joined us to talk about both Resilient Programming and Cleipnir .NET - a framework that Thomas worked on to implement the concepts of Resilient Programming in .NET applications. Cleipnir, and Resilient Programming, are fantastic for supporting message-driven architectures; whether you've built a monolith, series of microservices, or anything in between.
"But the idea is the same, kind of like that you try and remember the result of actions that you've done in a way that if you then start again, you won't... you kind of like you'll check in your little notebook if you already performed this action. If you did then you'll just return the result of the previous execution. If you look in your in your notebook and you can see, 'okay actually I haven't done this before' you will then perform the action"— Thomas Sylvest
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.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-7/cleipnir-and-beyond-on-resilient-development-practices-with-thomas-sylvest/
Useful Links Paxos Raft Polly .NET Hangfire Quartz Inbox and outbox pattern Idempotence Azure Durable Functions Mass Transit Rebus NServiceBus Thomas on LinkedIn Microsoft Open: Introduction to Cleipnir.Flows a tool to get resilient code Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in Touch: Via the contact page Joining the DiscordRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
Metalama
This episode of The Modern .NET Show is supported, in part, by Metalama, reduce your boilerplate code by up to 15% with Metalama's C#-to-C# template engine and reduce your code complexity today!
Show Notes"Like the whole point is to learn a system of thinking, like to learn how to analyze; how to, like, pick out what's happening and identify your problem, and then to implement a solution that fits your needs."— Harrison Ferrone
Welcome friends to The Modern .NET Show; the premier .NET podcast, focussing 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, Harrison Ferrone joined us to talk about his journey from being an English major to a self-taught programmer and instructional author focused on accessible tech education. Harrison also talks about his book, "Learning Design Patterns with Unity," which is designed as a practical guide for game development using well-known patterns while emphasizing the importance of quick wins in learning.
"Like we do so much work in the later parts of each chapter with like pattern variations and customisations, because I want readers and students and learners to like, look at it, look at the first, you know, 70% and be like, "oh, but what, oh, oh, we're going to talk about what ifs. Fantastic. Cause I have a lot of what ifs.""— Harrison Ferrone
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.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-7/the-art-of-teaching-programming-using-unity-an-interview-with-harrison-ferrone/
Useful Links Learning Design Patterns with Unity Design Patterns (AKA "The Gang of Four") Game Programming Patterns by Robert Nystrom KonMari method Thinking in Systems by Donella Meadows Chaos Monkey Atomic Habits by James Clear Rosetta Stone Unity Learn Explore the Unity Editor - Unity Learn GitHub repo for the book Harrison on LinkedIn Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in Touch: Via the contact page Joining the DiscordRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
Metalama
This episode of The Modern .NET Show is supported, in part, by Metalama, reduce your boilerplate code by up to 15% with Metalama's C#-to-C# template engine and reduce your code complexity today!
Show NotesHi everyone,
Just a quick thing before we start: this episode was recorded in the middle of summer, which meant that Erik needed to have his office window open. It's possible to hear the outside traffic throughout, but rest assured that our editing team have done what they can to reduce it's presence.
It's not that noticable and shouldn't affect your enjoyment of the show, but I wanted to give you a heads-up. Also, do remember that there's a full transcription available at the show's website; so check that out, too.
Anyway, let's get to it.
"So, I think my mantra for creating things like these tools is, "should be easy to get started and there should be a like an easy happy path but then if you want to deep dive and do a lot of options or even a t4 templates you can also do that," but there should be a simple happy path with good error reporting if something fails."— Erik Jensen
Welcome friends to The Modern .NET Show; the premier .NET podcast, focussing 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, Erik Jensen joined us to talk about EF Core Power Tools, and how you can use his project to increase your productivity with EF Core-based databases, regardless of the database technology used; if it's supported by EF Core, then the Power Tools extension supports it to.
"The one that's definitely used the most is what in a tool is referred to as reverse engineering. Where you point to an existing database, which can be some of the database types I mentioned previously. Like SQL Server, as a SQL database, Postgres, Oracle, MySQL, and Firebird. And then the tool asks you for a number of options, like you can specify what namespaces you're using, and where the files are laid in your project, and many, many other options. And then when you press OK at that point, as you said, Jamie, the tool generates a DB context and some classes that represent your tables with navigations between the tables based on discovery of foreign key relationships."— Erik Jensen
We also briefly touched on the MSBuild.Sdk.SqlProj project and its goal of giving cross-platform .NET developers a way to both describe and build their ideal database schema in code. We also covered Erik's personal process for dealing with feature requests, and how developers can ensure that that are providing valueable feedback to open-source projects; a subject that will come up again soon with future guest Scott Harden.
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.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-7/powering-up-with-erik-jensen-an-introduction-to-ef-core-power-tools/
EF Core Power Tools ContributorsThe following list is correct as of Oct 4th, 2024, and aims to show that it takes a village to create a tool as ubiquitous as EF Core Power Tools. It contains the top 10 (arranged by number of contributions) devs who have worked on EF Core Power Tools.
Erik Ejlskov Jensen Stephan Over Varorbc Will 保哥 Pedro Rocha P. León Pratik Pote Emanuele Curati Jonathon Wyza Useful Links EF Core Power Tools wiki EF Core Power Tools on GitHub Install EF Core Power Tools as a .NET global tool XKCD: Dependency DacFx MSBuild.Sdk.SqlProj Episode 19 - The .NET Foundation with Jon Galloway Connect with Erik on GitHub Connect with Erik on X Erik's blog Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET Show Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in Touch: Via the contact page Joining the DiscordRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
RJJ Software's Software Development Service
This episode of The Modern .NET Show is supported, in part, by RJJ Software's Podcasting Services, whether your company is looking to elevate its UK operations or reshape its US strategy, we can provide tailored solutions that exceed expectations.
Show Notes"Okay. So I’ll come on to that point is that’s obviously something i’d like to talk about. But a couple of things I should mention, I guess. That I think you’re absolutely right with all the points you raised, but we are trying to work on on everything there. So a couple of things are worth pointing out: one is docker-init; so nowadays if you start in like a new project with python or node or whatever, you can run the docker-init command, and what that will do is like create a dockerfile and a couple of other files, I think, to help you get started, and it sort of contains that the best practices. So to try and help you get over the hump of trying to understand how to create a dockerfile, and all the different ways you can build that without needing to know everything. So I think that really helps."—Adrian Mouat
Welcome friends to The Modern .NET Show; the premier .NET podcast, focussing 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, Adrian Mouat joined us to talk about Chainguard, what a distroless container is, a number of tools that you can use to check whether your containers have any CVEs present, attestations and reproducibility, and a number of ways to secure your applications once they are running in the wild.
"Yeah, I like your point there about showing your receipts. So in attestations, you can also say things like, you know, “we did do this on this image.” You can create an attestation that says, “hey, I ran a scanner on this image and I had this output at this time.” And because it’s all signed, you know that that did happen, if you like. Yeah, and also like, you know, you could have an attestation that said, “I ran these tests on this image at this time and this was the output,” sort of thing. So it’s sort of proving that certain steps were taken."— Adrian Mouat
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.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-7/chainguard-and-securing-your-containers-with-adrian-mouat/
Useful Links Chainguard Container Hacks and Fun Images OODA Loop Snyk Grype docker scout the NVD (National Vulnerabilities Database) seccomp Google Distroless project github.com/wolfi-dev SBOMs Attestation Sigstore project edu.chainguard.dev Chainguard's YouTube channel Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET Show Editing and post-production services for this episode were provided (in part) by MB Podcast Services Supporting the show: Leave a rating or review Buy the show a coffee Become a patronRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
Metalama
This episode of The Modern .NET Show is supported, in part, by Metalama, reduce your boilerplate code by up to 15% with Metalama's C#-to-C# template engine and reduce your code complexity today!
Show Notes"Essentially, when you look at it, what we are doing, we are not building software. We are changing it, we are maintaining it. Because when you look at the typical lifecycle of the application, enterprise one I would say, or any big system where you invest lots of time lots of money building it, you want to exploit this for 5-10-15 years hopefully. So when you look at the percentages, you're building something for one year and then you are using it for nine more years, let's say. It's a 10 year life cycle. So when you think about it, you spend 10 times... er, 10 percent of your time building something and 90 percent of the lifecycle of the application or the system responding to change requests, building new things, changing, adapting, and maintaining. So essentially, our job is not to build out. Our job is to sustain all these request changes. I think that's the first point we need to clear."— Dejan Miličić
Welcome friends to The Modern .NET Show; the premier .NET podcast, focussing 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, Dejan Miličić joined us to talk about the CQRS pattern, how it came from CQS, what CQS is and how it's related to Alan Kay's original ideas for object-oriented programming, being pragmatic as developers and engineers, the importance of system design and system's thinking, and how we all need to realise that our software lives on for years after we've pushed our changes to the repo.
"So I, indeed, agree with you that people should pay more attention to system design. Start looking at the whole picture. And the extreme of this thinking would be: okay you will go into job interview, they will ask you about, I don't know, quick sort you, will implement it on the whiteboard, and then six months later on you will go and purchase or maybe download a NuGet package with with a quick sort implementation, because you know it makes sense; you don't want to implement something that have been implemented this many times before."— Dejan Miličić
Whilst this episode doesn't focus on .NET per se, I think that the subjects that Dejan and I covered are incredibly important for anyone who wants to seriously level up their game. In fact, Dejan proved this point when he said:
"We [are] all, like, containerised into our own small silos and working on our own without being aware of the whole system. When you look at what people go through when they prepare for job interviews at, I don't you know, Google, Facebook, nowadays Meta, Microsoft, you have all these books on the system design. And then they go, instead of, you know, going to the job interview after 20 years of experience and talking about what you do and what you know, people with 20 years of experience still sit down and learn and prepare for the system design interview. I'm not saying they shouldn't be preparing, but some of my colleagues told me that that was the first time in their careers that they started looking at the system design as a discipline."— Dejan Miličić
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.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-7/cqrs-system-maintainability-and-pragmatic-tech-choices-with-dejan-milicic/
Useful Links Dejan on Twitter: x.com/dejanmilicic Dejjan on LinkedIn: linkedin.com/in/dejanmilicic Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET Show Editing and post-production services for this episode were provided (in part) by MB Podcast Services Supporting the show: Leave a rating or review Buy the show a coffee Become a patronRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
RJJ Software's Software Development Service
This episode of The Modern .NET Show is supported, in part, by RJJ Software's Podcasting Services, whether your company is looking to elevate its UK operations or reshape its US strategy, we can provide tailored solutions that exceed expectations.
Show Notes"You can use Linq to write database... to query a database and I thought, "well you can interactively write queries in SQL using tools like SQL Server Management Studio, so wouldn't it be great if you could do the same thing in Linq?" So I wrote a tool to do that—that was LinqPad—to as you can just type Linq queries in interactively. And then once I released that it became quite popular and there were a lot of people using it, including a lot of folks at Microsoft were using it. And I was getting a lot of feature requests"— Joe Albahari
In this episode, Joe Albahari joined us to talk about LinqPad—yes, that LinqPad. The one tool which makes all .NET developers lives easier. Don't worry if you've never heard of LinqPad, as Joe and I talk about why you should use it, and how it can make your .NET life way more productive. We also talked about handling feature requests, and building a development platform.
"When something doesn't work correctly, it can be really hard to figure out what's going on. Sometimes it just requires experimentation. And that's something I dislike. I always like to try to understand exactly what's going on underneath and then try and from that understanding make something work. I don't just like trying random stuff".— Joe Albahari
We also round out our conversation by taking some questions from the community, which Joe graciously agreed to answer for us. Don't forget that you can join the community (for free) over at dotnetcore.show/discord where you'll be able to connect with other listeners, share interesting links, propose episode ideas, and suggest questions for guests.
After recording, Joe and I spoke in depth about the possibility of a cross-platform version of LinqPad; later that day (we recorded on May 2nd, 2024), I sent off an email introducing Joe to the team at Avalonia, and a few weeks before this episode dropped Joe announced a version of LinqPad which is coming to macOS. How cool is that?
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.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-7/linqpad-and-building-open-source-developer-platforms-with-joe-albahari/
Useful Links LiniqPad on X LinqPad Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET Show Editing and post-production services for this episode were provided (in part) by MB Podcast Services Supporting the show: Leave a rating or review Buy the show a coffee Become a patronRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
Avalonia XPF
This episode of The Modern .NET Show is supported, in part, by RJJ Software's Podcasting Services, where your podcast becomes extraordinary.
Show NotesMaybe start with Generative AI. As you, I think, touched on, it's different from what we call "traditional AI." And I also want to acknowledge the term "traditional AI"l is very odd to say it's not traditional. It's very much prevalent and relevant and active
— Amit BahreeWelcome to The Modern .NET Show! Formerly known as The .NET Core Podcast, we are the go-to podcast for all .NET developers worldwide and I am your host Jamie "GaProgMan" Taylor.
In this episode, Amit Bahree joined us to talk about what generative AI is, what it isn't, and how it's different from, so called, "traditional AI". He also talks through his new book "Generative AI in Action by Amit Bahree," a book that I had the good fortune to read ahead of publication and can definitely recommend.
I'm not asking is it going to replace an engineer, but like, can an engineer for now just ignore it a little bit?
—Jamie Taylor
Yeah, no. So, no, it's not replacing any engineers, I can tell you that. No.
— Amit BahreeSo let's sit back, open up a terminal, type in dotnet new podcast and we'll dive into the core of Modern .NET.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-6/generative-ai-for-dotnet-developers-with-amit-bahree/
Useful Links A discount code, good for 45% off all Manning Products: dotnetshow24 Generative AI in Action by Amit Bahree Phi-3 Attention Is All You Need Coding Blocks podcast Connecting with Amit: on X (formerly known as Twitter) @bahree Amit's blog Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in touch: via the contact page joining the Discord Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET ShowRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
Avalonia XPF
This episode of The Modern .NET Show is supported, in part, by Avalonia XPF, a binary-compatible cross-platform fork of WPF, enables WPF apps to run on new platforms with minimal effort and maximum compatibility.
Show NotesYeah, exactly.
And it means you can, if you see it in its sort of native place, next time that you're writing something, maybe you don't go and change all your IEnumerables to IAsyncEnumerable because that's not worth doing. But maybe next time you're writing a new API you're like, "oh, you know what, I will use that newer API because it will give me better performance. And when I'm writing it, it's easy to just use the new thing and it's more applicable to this situation."
— Andrew LockWelcome to The Modern .NET Show! Formerly known as The .NET Core Podcast, we are the go-to podcast for all .NET developers worldwide and I am your host Jamie "GaProgMan" Taylor.
In this episode, Andrew Lock joined us to talk about ASP .NET Core's new Minimal APIs paradigm. Along the We also talked about validation, and the third edition of his book "ASP .NET Core in Action" from Manning Publishing.
So it's sort of interesting, the philosophy, because obviously validation was one of the things they had some pushback.
In MVC You've got validation there by default, and clearly you always want to have validation of your arguments. So why didn't they include it in minimal APIs? And the answer basically is because there's more than one validation framework. There's the data annotation attributes... but then there's other frameworks like the fluent validation, for example, is a very popular one. And the only way that works in MVC is you have to sort of try and plug it in as an extra part and remove the old validation. And they didn't want to prioritize any particular style of doing validation.
— Andrew LockSo let's sit back, open up a terminal, type in dotnet new podcast and we'll dive into the core of Modern .NET.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-6/navigating-the-aspnet-core-maze-from-middleware-to-minimal-apis-and-modern-c-sharp-with-andrew-lock/
Useful Links A discount code, good for 45% off all Manning Products: dotnetshow24 ASP .NET Core in Action Andrew's previous appearance on the show: Episode 17 - ASP .NET Core's Middleware Pipeline with Andrew Lock Andrew's blog OWIN version The .NET blog posts by Stephen Toub Episode 72 - Emulating a Video Game System in .NET with Ryujinx Express.js build Web APIs Using Python & FastAPI with @KJayMiller Andrew's series of blog posts on Source Generators Andrew on: X (formally known as Twitter) LinkedIn Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in touch: via the contact page joining the Discord Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET ShowRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
Avalonia XPF
This episode of The Modern .NET Show is supported, in part, by Avalonia XPF, a binary-compatible cross-platform fork of WPF, enables WPF apps to run on new platforms with minimal effort and maximum compatibility.
Show NotesWhat do they go for? They go for one that's separated from the herd. And the idea behind cyber security nowadays should really actually be: put enough security controls in that they just go, "you know what? There's someone down the road that's got it all wide open. I'm just gonna go for them." And if you can just make yourself look as unappetizing and unappealing as possible, that's half the battle.
— Lianne PotterWelcome to The Modern .NET Show! Formerly known as The .NET Core Podcast, we are the go-to podcast for all .NET developers worldwide and I am your host Jamie "GaProgMan" Taylor.
In this episode, Lianne Potter and Jeff Watkins of the Compromising Positions podcast joined us to talk a little bit about the practical side of cyber security. Both Lianne and Jeff are cyber security professionals and have a ton of experience in the industry. But I had them talk about cyber security from a developer's point of view: what can we do, what do we need to know, and how can we help our colleagues on a daily basis?
I think the other side's true as well.
I think companies in general need to encourage a more holistic, and shift-left, and integrated approach to security. I think we talk about that quite a bit about the idea of this should not be an "over the fence," because I guess there's two sides of the coin. One side saying, "oh look, there's the security team, they're the Department of Work prevention, they're the ones who are going to stop you." And there's the other side of that coin where nobody's bothered to ever include people from the security in their ways of working and daily practices
— Jeff WatkinsSo let's sit back, open up a terminal, type in dotnet new podcast and we'll dive into the core of Modern .NET.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-6/breaking-the-compromise-unravelling-the-truths-of-cyber-security-with-lianne-potter-and-jeff-watkins/
Useful Links Compromising Positions podcast Leeds Cyber Security Conference Kaizen by Masaaki Imai Toyota Production System The Goal The Phoenix Project The Dark Money Files ISC2 ISC2's Free entry-level cyber security training + certification exam Lianne Potter on LinkedIn Jeff Watkins on LinkedIn Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in touch: via the contact page joining the Discord Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET ShowRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
Avalonia XPF
This episode of The Modern .NET Show is supported, in part, by Avalonia XPF, a binary-compatible cross-platform fork of WPF, enables WPF apps to run on new platforms with minimal effort and maximum compatibility.
Show NotesI want it to be like one of those books that you can pick up and you can, like, you don't have to have .NET experience. You might, you know, maybe, you know, Java or maybe, you know, Python or something like that. You should be able to pick this book up and get to a point where you can actually build real world applications with .NET that are secure, they're fast, they're well tested. They have localization built in. They're put into containers that you can throw into like a Kubernetes. I wanted to get to that point where it's like, you could build applications that I've built like, say, with UiPath
— Dustin MetzgarWelcome to The Modern .NET Show! Formerly known as The .NET Core Podcast, we are the go-to podcast for all .NET developers worldwide and I am your host Jamie "GaProgMan" Taylor.
In this episode, Dustin Metzgar joined us to talk about his new book ".NET in Action Second Edition." This book takes the first edition, written back in 2018, which targetted .NET Core 2 and upgrades and expands it to both cover a lot more content and to focus on .NET 8.
Along the way, we also discussed the basics of identity and the common pitfalls that developers fall into when they work with one of the current identity standards.
So certificates are still involved too because it's because you need that certificate to sign the tokens. And I think what's interesting about certificates is like you have that, you know, this kind of asymmetric encryption where, you know, you have a private key and then you publish a public key that everybody can see to use to kind of decrypt your, what you sign, what you encrypt. And that's a kind of a feature of like these identity providers.
— Dustin MetzgarSo let's sit back, open up a terminal, type in dotnet new podcast and we'll dive into the core of Modern .NET.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-6/net-unwrapped-from-workflow-engines-to-kubernetes-containers-a-developers-journey-with-dustin-metzgar/
Useful Links A discount code, good for 45% off all Manning Products: dotnetshow24 UiPath .NET in Action Second Edition Episode 3 - CoreWF With Dustin Metzgar S06E05 - Navigating the .NETverse: From Assembler to Open Source Marvel with Scott Hunter Episode 104 - C# with Mads Torgersen S06E09 - From Code Generation to Revolutionary RavenDB: Unveiling the Database Secrets with Oren Eini UiPath/CoreWF on GitHub Duende Oauth OpenID Connect Okta Auth0 OpenIddict Papers Please Entra IdentityModel Auth0 Blog Dustin on Mastodon Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in touch: via the contact page joining the Discord Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET ShowRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
Avalonia XPF
This episode of The Modern .NET Show is supported, in part, by Avalonia XPF, a binary-compatible cross-platform fork of WPF, enables WPF apps to run on new platforms with minimal effort and maximum compatibility.
NService BusThis episode of The Modern .NET Show is supported, in part, by NServiceBus, the ultimate tool to build robust and reliable systems that can handle failures gracefully, maintain high availability, and scale to meet growing demand.
Make sure you click the link in the show notes to learn more about NServiceBus.
Show NotesWhen you talk to the Temporal guys and look at the way that they've done some of their work is they have a... they have stuff that can run for years.
So for instance, they'll kick off a workflow for one of their customers, kicks off a workflow when the customer's created, and that workflow is like managed by Temporal for as long as that customer is a customer. So it could be, you know, I don't know, occasionally sending out an email to, you know, "happy birthday" or something, or sending them promotions or whatever. So they see, they see workflows as like lifetime things
— John KattenhornWelcome to The Modern .NET Show! Formerly known as The .NET Core Podcast, we are the go-to podcast for all .NET developers worldwide and I am your host Jamie "GaProgMan" Taylor.
In this episode, John Kattenhorn joined us to talk about Temporal.io and their platform for building durable workflows which can operate for years at a time. John in the CEO of Applicita and wanted to talk about the ways that developers can build applications and workflows which can live in the cloud for a very long time.
And the great thing about Temporal is it manages all of those resources for you.
So if you imagined me and you trying to do that, we'd end up standing up, I don't know, a running service or something that was constantly polling the data, looking for eligible customers or something. You'd be burning some resources looking at that stuff, and that's not how they do that. So if you've got like a million customers, the Temporal system dehydrates everything that isn't relevant and only hydrates the workflows that have an action to perform
— John KattenhornSo let's sit back, open up a terminal, type in dotnet new podcast and we'll dive into the core of Modern .NET.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-6/temporal-orchestrating-success-in-distributed-systems-with-security-and-simplicity-with-john-kattenhorn-with-john-kattenhorn/
Useful Links temporal.io Polly Durable Tasks from Microsoft Azure Event Hubs [Azure] Service Bus Cadence Godot Hangfire Saga pattern System.Text.Json Namespace GitHub samples eShop Temporal's YouTube channel Temporal's Slack John Kattenhorn on X Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in touch: via the contact page joining the Discord Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET ShowRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
Avalonia XPF
This episode of The Modern .NET Show is supported, in part, by Avalonia XPF, a binary-compatible cross-platform fork of WPF, enables WPF apps to run on new platforms with minimal effort and maximum compatibility.
Show NotesUno Platform started off as the core UI framework. UI and non UI, because as part of Uno Platform itself, you have some non UI APIs like accelerometer and like these device sensors that you can use in a cross platform manner. So that part is the core framework, which is the backbone to everything that we built on top of it.
— Martin ZikmundWelcome to The Modern .NET Show! Formerly known as The .NET Core Podcast, we are the go-to podcast for all .NET developers worldwide and I am your host Jamie "GaProgMan" Taylor.
In this episode, Martin Zikmund joined us to talk about Uno Platform and how it's way more than just a UI framework. It has support for APIs such as reading device sensors like accelerometers, too. But the bread and butter of Uno Platform, like AvaloniaUI, comes from the fact that you can use the familiar WPF syntax and either the new MVUX architecture or the more familiar to most MVU architecture to build your apps.
Yeah, ideally it should work on any Linux where .NET runs.
And we are currently using GTK as the underlying framework that simplifies our like that access to Linux specific APIs. So there is kind of a middleware layer of GTK. And you know, that makes the development for us much easier because it already has those shims for different versions of Linux and so on built in.
— Martin ZikmundSo let's sit back, open up a terminal, type in dotnet new podcast and we'll dive into the core of Modern .NET.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-6/s06e18-uno-platform-one-ui-to-rule-them-all-with-martin-zikmund/
Useful Links Episode 60 - Uno Platform With Jérôme Laban Uno Platform's dotnet new templates S06E17 - .NET MAUI: Navigating the Cross-Platform Code Seas with Maddy Montaquila Uno Toolkit Uno Extensions Uno Figma MVVM Community toolkit MVVM MVUX Comet https://platform.uno docs.platform.uno Uno Samples repository on GitHub Uno Platform's YouTube channel Uno.Gallery Uno Platform's case studies and showcases Uno Platform on Discord GitHub discussions on the Uno Platform repository Uno Platform on X Uno Platform on TikTok Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in touch: via the contact page joining the Discord Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET ShowRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
Avalonia XPF
This episode of The Modern .NET Show is supported, in part, by Avalonia XPF, a binary-compatible cross-platform fork of WPF, enables WPF apps to run on new platforms with minimal effort and maximum compatibility.
Show NotesYeah, so .NET MAUI is the .NET stack, framework, whatever you want to call it, for writing one code base that runs on what we call client devices, client platforms.
So you have the web, you have ASP .NET Blazor and all that stuff. You have the console apps, you can write with C#, of course, so many backends and APIs and all of that stuff running in the cloud. But with MAUI, it's for client app development. So Android, iOS, macOS and Windows, you can target using XAML and C#, or just C# if you don't like XAML, or Razor if you want to. All are options.
But you can write one code, business logic, your UI, all of your endpoint management and everything, all of that. And it's just written in C#. It's a .NET application. It's using .NET MAUI
— Maddy MontaquilaWelcome to The Modern .NET Show! Formerly known as The .NET Core Podcast, we are the go-to podcast for all .NET developers worldwide and I am your host Jamie "GaProgMan" Taylor.
In this episode, Maddy Montaquila joined us to talk about .NET MAUI—the Multi-platform Application User Interface—what it is, it's history, and why developers who are looking for a first-party UI-framework their modern .NET apps should check it out.
We can do that totally within MAUI. It's actually pretty easy.
So you can just say like, "on platform Android, do this," or "on idiom," we call them idioms, right? Tablet, desktop, or phone. "On idiom, do this."
We actually have customers who will ship in the same code base, like two completely different navigation stacks. So it will say, "on desktop, load it up with this nav stack and load into these pages. On mobile, load it up into this nav stack and load up these pages." But since you can share the components, you can basically say, "the navigation of my desktop app, everything is horizontal, but I pull in the same components. It's just like a different grid view than I would do on mobile where it's all stacked on top of each other and it's a scroll." Right?
So you can get super flexible with all of it.
— Maddy MontaquilaSo let's sit back, open up a terminal, type in dotnet new podcast and we'll dive into the core of Modern .NET.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-6/s6e17-net-maui-navigating-the-cross-platform-code-seas-with-maddy-montaquila/
Useful Links .NET Upgrade Assistant .NET MAUI VS Code extension C# Dev Kit David Ortinau's GitHub MAUI samples repo UIKit Mac Catalyst Maui.Markup ReactiveUI MVVM OpenJDK .NET MAUI documentation Android Studio aka.ms/mauidevkit-docs Bitwarden Cliff Agius Handy-App .NET Podcasts app eshop-mobile-client learn.microsoft.com James Montamagno Gerald Versluis You can email Maddy at [email protected] .NET MAUI on Twitter The official .NET discord server .NET MAUI GitHub repo Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in touch: via the contact page joining the Discord Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET ShowRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
Avalonia XPF
This episode of The Modern .NET Show is supported, in part, by Avalonia XPF, a binary-compatible cross-platform fork of WPF, enables WPF apps to run on new platforms with minimal effort and maximum compatibility.
Show Notes And keep in mind that, not to bash OWASP and the top ten at all because I'm a big fan of OWASP, but people always tell me like, "yeah, I'm OWASP compliant," and that's the biggest BS, to be honest. Because a top ten could not like, it should be an awareness piece and you should work from it. And there are better ways of dealing with that. But I think a security scorecard should never be a goal. It should be a means to reach the goal, to have better understanding, right? And hopefully they can change stuff and be more expressive. — Niels TanisWelcome to The Modern .NET Show! Formerly known as The .NET Core Podcast, we are the go-to podcast for all .NET developers worldwide and I am your host Jamie "GaProgMan" Taylor.
In this episode, Niels Tanis returned to the show. He was previous on the show back in episode 69 - The Risks of Third Party Code With Niels Tanis - which was released back in February of 2021. I asked Niels to back on the show to talk more about securing the software development supply chain and SBoMs (Software Bills of Materials).
Yeah, that makes sense. It's funny.
So I think when I started out talking about supply chain, and there were some tools that have been introduced to do SBoM data, and then you also come into an area called provenance, which tells more about the build and about "this build server was used. And I've run on GitHub actions, or I run on a GitLab instance, or I have stuff done differently," right? Maybe even the Redhat one: Tekton, that kind of thing. And based on that, I'm producing an SBoM.
And I did a talk and I concluded with that, "it's like, these are cool tools, you need to look into it." And then somebody at the end asked me the question, "and the what? You have all the data? And then what?" I said, "yeah, that's solid question because that will be the next step." And it's funny that you mentioned it as well.
So over the time, I think it was around already when I started out talking. But there's a project that Google created called Guac.
— Niels TanisSo let's sit back, open up a terminal, type in dotnet new podcast and we'll dive into the core of Modern .NET.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-6/building-secure-software-unveiling-the-hidden-dependencies-with-niels-tanis/
Useful Links Getting started with Tekton Guac NDC in London NDC security Vercaode BinaryFormatter serialization methods are obsolete and prohibited in ASP.NET apps Second Breakfast: Implicit and Mutation-Based Serialization Vulnerabilities in .NET Charles Lamb - To Be Creative, Don't Think So Hard Log4j vulnerability - what everyone needs to know Google SALSA CycloneDX Open Source Security Foundation ossf/scorecard: OpenSSF Scorecard securityscorecards.dev Newtonsoft.Json Open Source Insights What deps.dev has to say about OwaspHeaders.Core nielstanis/Fennec.NetCore: Fennec.NetCore Metalnem/sharpfuzz: AFL-based fuzz testing for .NET AFL) libfuzzer Five years of fuzzing .NET with SharpFuzz CodeQL SonarCube Cargo Vet Common Vulnerabilities and Exposures defintion OpenVas RLBox Emscripten Extending Webassembly to the Cloud with .NET Microsoft Build 2023 - Hyperlight Bytecode Alliance Wasmtime CyberBunker WasmCon 2023 Talks Playlist XKCD - Dependency Connecting with Niels: on Mastodon his website Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in touch: via the contact page joining the Discord Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET ShowRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
Avalonia XPF
This episode of The Modern .NET Show is supported, in part, by Avalonia XPF, a binary-compatible cross-platform fork of WPF, enables WPF apps to run on new platforms with minimal effort and maximum compatibility.
Show NotesYeah, so C# Dev Kit, it is a pretty new extension in VS Code. We just GA'd it back in early October. And it's an extension that basically enables you to be productive writing C# applications in VS Code.
—Leslie RichardsonWelcome to The Modern .NET Show! Formerly known as The .NET Core Podcast, we are the go-to podcast for all .NET developers worldwide and I am your host Jamie "GaProgMan" Taylor.
In this episode, I spoke with Leslie Richardson about the C# Dev Kit, a new extension for Visual Studio Code which aims to make the experience of writing C# and .NET code in the free editor more productive. It improves the experience of working with almost all code bases which use modern .NET, and includes the ability to even run and explore your unit tests within VS Code - something that wasn't easily doable previously.
I know before C# Dev Kit existed, the Test Explorer is a window that exists by default in VS Code. But yeah, you're already laughing like, "oh yeah."
So it wasn't very great pre Dev Kit from my understanding, like simple things such as being able to automatically recognise your test once you build your test project. That was not a thing, which blows my mind. I'm like, "but then what are you supposed to do? Just manually add them in? That doesn't sound fun at all, especially if you're trying to do the whole test-driven development." You've got tests everywhere and it's like, "well, that's 50 some tests I have to log in. Yippee. I love testing."
Yeah, I can't imagine that's a great experience. So thankfully, with C# Dev Kit, we've actually made the window functional. I know, bare minimum, but I still think it's pretty good. So when you build your test projects, it should be able to recognize everything that you have registered as a test via like a test method attribute or whatever kind of test type that you're using
—Leslie RichardsonSo let's sit back, open up a terminal, type in dotnet new podcast and we'll dive into the core of Modern .NET.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-6/code-coffee-and-clever-debugging-leslie-richardsons-microsoft-journey-and-the-c-sharp-dev-kit-in-visual-studio-code-with-leslie-richardson/
Useful Links C# Dev Kit .NET Aspire The Visual Studio Toolbox: on YouTube on Twitch ASP .NET Core 101 Jamie's recommended books for juniors: The Life-Changing Magic of Tidying Up by Marie Kondo Essentialism by Greg McEwen The Design of Everyday Things by Don Norman GitHub Copilot Visual Studio subscription .NET MAUI extension for VS Code Unity extension for VS Code Codespaces Microsoft Dev Box What is VS Code and C# Dev Kit? [Pt 1] Leslie on Twitter The OmniSharp-based C# extension Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in touch: via the contact page joining the Discord Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET ShowRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
NService Bus
This episode of The Modern .NET Show is supported, in part, by NServiceBus, the ultimate tool to build robust and reliable systems that can handle failures gracefully, maintain high availability, and scale to meet growing demand.
Make sure you click the link in the show notes to learn more about NServiceBus.
Show NotesYeah. So what I was thinking the other day is that what we want is to concentrate on the business logic that we need to implement and spend as small as little time as possible configuring, installing and figuring out the tools and libraries that we are using for this specific task. Like our mission is to produce the business logic and we should try to minimize the time that we spend on the tools and libraries that enable us to build the software.
—Giorgi DalakishviliWelcome to The Modern .NET Show! Formerly known as The .NET Core Podcast, we are the go-to podcast for all .NET developers worldwide and I am your host Jamie "GaProgMan" Taylor.
In this episode, I spoke with Giorgi Dalakishvili about Postgresql, DuckDB, and where you might use either of them in your applications. As Giorgi points out, .NET has support for SQL Server baked in, but there's also support for other database technologies too:
Yes, there are many database technologies and just like you, for me, SQL Server was the default go to database for quite a long time because it's from Microsoft. All the frameworks and libraries work with SQL Server out of the box, and have usually better support for SQL Server than for other databases.
But recently I have been diving into Postgresql, which is a free database and I discovered that it has many interesting features and I think that many .NET developers will be quite excited about these features. The are very useful in some very specific scenarios. And it also has a very good support for .NET. Nowadays there is a .NET driver for Postgres, there is a .NET driver for Entity Framework core. So I would say it's not behind SQL server in terms of .NET support or feature wise.
—Giorgi DalakishviliHe also points out that our specialist skill as developers is not to focus on the tools, libraries, and frameworks, but to use what we have in our collective toolboxes to build the business logic that our customers, clients, and users desire of us. And along the way, he drops some knowledge on an essential NuGet package for those of us who are using Entity Framework..
So let's sit back, open up a terminal, type in dotnet new podcast and we'll dive into the core of Modern .NET.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-6/from-net-to-DuckDB-unleashing-the-database-evolution-with-giorgi-dalakishvili/
Useful Links Giorgi's GitHub DuckDB .NET Driver Postgres Array data type Postgres Range data type DuckDB DbUpdateException EntityFramework.Exceptions JsonB data type Vector embeddings Cosine similarity Vector databases: Chroma qdrant pgvector pgvector .NET library OLAP queries parquet files Dapper DuckDB documentation Dapr DuckDB Wasm; run DuckDB in your browser GitHub Codespaces Connecting with Giorgi: on Twitter on LinkedIn on his website Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in touch: via the contact page joining the Discord Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET ShowRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
-
Avalonia XPF
This episode of The Modern .NET Show is supported, in part, by Avalonia XPF, a binary-compatible cross-platform fork of WPF, enables WPF apps to run on new platforms with minimal effort and maximum compatibility.
Show NotesHateos allows you to add links to the actions you can perform with the data you're returning. So imagine a tweet and imagine, for example, just a links. It's just an object with some arrays. And one of the links could be a retweet link or like a favourite link or like a delete link. And each link contains a type, which is like the HTTP type, it contains the URL to where you perform this action, and it also contains like a name. So kind of human readable kind of name. So like like retweet, delete, stuff like that.
—Sander ten BrinkeWelcome to The Modern .NET Show! Formerly known as The .NET Core Podcast, we are the go-to podcast for all .NET developers worldwide and I am your host Jamie "GaProgMan" Taylor.
In this episode, I spoke with Sander ten Brinke about HATEOAS and HTMX. These are two separate but complementary technologies which help to build reactive web applications. In fact, as Irina pointed out back in episode 2 of the current season (released on Sept 22nd, 2023), you're likely not building RESTful services if you're not doing HATEOAS.
And HTMX is something, as you'll find out, which aims to simplify building HTML-based apps that utilise web-based APIs by taking care of the boilerplate JavaScript code that you might need to include, using a series of attributes that you can place on elements.
So HTMX is in the principle, it's a JavaScript library, which you can use. So you can use it in your application to write a whole lot less JavaScript.
Let's think back to the good old days, right, where we were writing, like, Web 1.0 applications and our servers were simply like, we're using HTML templating engines, which they still do.
It worked and it worked fine, but it wasn't very interactive because then we kind of got to the point where we were like, we want to do some cool clients application, but we don't want to reload the page the entire time. And that is kind of where the SPA movement came along. We want to be able to have a rich interactive application where clicking a button or clicking multiple buttons, just a bit of the page refreshes, right? That's kind of the Web 2.0, I suppose.
—Sander ten BrinkeSo let's sit back, open up a terminal, type in dotnet new podcast and we'll dive into the core of Modern .NET.
Supporting the ShowIf you find this episode useful in any way, please consider supporting the show by either leaving a review (check our review page for ways to do that), sharing the episode with a friend or colleague, buying the host a coffee, or considering becoming a Patron of the show.
Full Show NotesThe full show notes, including links to some of the things we discussed and a full transcription of this episode, can be found at: https://dotnetcore.show/season-6/navigating-the-web-of-hateoas-and-htmx-unleashing-the-power-of-hypermedia-and-simplified-front-end-wizardry-with-sander-ten-brinke/
Useful Links HATEOS Chapter 5 Representational State Transfer (REST) of Roy Thomas Fielding's paper which introduced REST in 2000 HTMX munisio - Sander's HATEOS NuGet library riskfirst.hateoas Sander's blog post introducing munisio HTMX.NET HTMX for ASP.NET Core Developers Getting in touch with Sander: on Twitter: @SanderTenBrinke on LinkedIn his website Everything you need to know about configuration and secret management in .NET Supporting the show: Leave a rating or review Buy the show a coffee Become a patron Getting in touch: via the contact page joining the Discord Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET ShowRemember to rate and review the show on Apple Podcasts, Podchaser, or wherever you find your podcasts, this will help the show's audience grow. Or you can just share the show with a friend.
And don't forget to reach out via our Contact page. We're very interested in your opinion of the show, so please get in touch.
You can support the show by making a monthly donation on the show's Patreon page at: https://www.patreon.com/TheDotNetCorePodcast.
- Laat meer zien