The Modern .NET Show

Episode 91 - C# 10 and .NET 6 with Mark J Price

Sponsors

Support for this episode of The Modern .NET Show comes from the following sponsors. Please take a moment to learn more about their products and services:

Please also see the full sponsor message(s) in the episode transcription for more details of their products and services, and offers exclusive to listeners of The Modern .NET Show.

Thank you to the sponsors for supporting the show.

Embedded Player

Episode 91 - C# 10 and .NET 6 with Mark J Price
The .NET Core Podcast

Episode 91 - C# 10 and .NET 6 with Mark J Price

Supporting The Show

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

Episode Transcription

This episode of The .NET Core Podcast is brought to you in part by elmah io

elmah io is error logging for .NET developers. Install a NuGet package and add a few lines of code to automatically collect errors from all of your applications on elmah io’s secure servers. After having searched through gigabytes of log data in just a few milliseconds, you’ll never go back to text-based log files spread across servers.

But elmah io doesn’t just store your log data. It notifies you through email, Slack, Microsoft Teams, or one of the other available integrations. When inspecting errors, you will be presented with a range of information about the current context and previous steps leading up to an error. This helps you fix errors fast.

Check out elmah io by going to elmah dot io and sign up for a free 21 days trial.


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

I am your host, Jamie “GaProgMan” Taylor. In this episode, I talked with Mark J Price about how C# 10 and .NET 6 have both made it a lot easier for beginner developers to get started in development - whether that’s in a classroom or a self-guided learning setting. This is Mark’s second appearance on the show, with his previous appearance being on two years ago, on episode 44 - Learning .NET Core with Mark J Price.

Along the way we talk about some of the simplifications which both C# 10 and .NET 6 have brought about for teachers, learners, and authors. Mark also discusses his new book C# 10 and .NET 6 - Modern Cross-Platform Development

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

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

Jamie

So, Mark, it’s so great to have you on the show. Again, it’s been almost two years. I think we were talking just off air is going to be just over two years. Since you were last on the show. It’s great to have you back.

Mark

Thank you very much, Jamie. It’s great to be back.

Jamie

Excellent. It’s been a while. We won’t go into what’s happening in the world. But it’s a very strange time we find ourselves in. And I hope that everyone is happy and healthy and safe. And I think that’s about as much as I’ll say about that. But how are you Mark? Are you well?

Mark

I’m good. I’m very well, thank you. I recently moved out of London to the countryside, to be closer to family and be able to join my parents on dog walks and things like that. And I’m really enjoying it, it’s the actually the first time in my life that I’ve actually got a garden. So at some point next year, I’m planning to go to a dog shelter, and maybe adopt maybe a slightly older dog who no one else wants, but who I have a connection with, I’m hoping that that will work out.

Jamie

Oh, that’s wonderful. I’m glad to hear him to find that space to be able to sort of chill out and get some fresh air and like you say, go for dog walks and things; because I think it’s as important to do that - to look after your physical and mental well being - as it is to sort of sit down and do the work right? Because a lot of times we just focus on, “well, I’ll sit at the computer, I’ll inhale coffee, and just shove pizza into my face. And we’ll make the program work.” And whilst that can be done, I’m often telling juniors and I’m actually helping out some students who are studying T levels, which are new qualifications in the UK, I’m telling them, “hey, I want you to figure out eight hours and use that to sleep in, that cannot be moved. And then work around that. Don’t build your life around the work and find time to sleep, and find time to rest, and find time to do things that are important to you. It’s much more important to find the core things that are important to you and build everything else around it.” Whether that’s good advice or not. I don’t know.

Mark

I think that is excellent advice, especially to younger people who maybe haven’t been able to come to that themselves after decades of work. So to learn that or have someone give that advice early on in their careers, that’s fantastic. In fact, my niece is just choosing her college qualifications. So she was picking between A levels and T levels. I’d never heard of T levels before this, this new thing. So it says education is always changing.

Jamie

Absolutely. But it’s also always staying the same I found. I went in to speak to some of the folks about the T levels. And they were like, “yeah, so we doing .NET Framework.”

Mark

Oh, yeah, yes. .NET Framework is… Microsoft and they’re naming. It’s, it’s biting them. And maybe causing a lot of confusion in the marketplace, the number of tweets and LinkedIn posts that you get where people, quite naturally get confused by the differences between .NET Framework and .NET Core and, and now just .NET. It’s why I often prefix it with “modern .NET”. That’s that’s what my books and what I’m working on at the moment is modern .NET.

Jamie

That’s a great idea. I mean, there’s there’s nothing inherently wrong with .NET Framework. .NET Framework will be around - as far as I’m aware of, you know, from what I’ve been told .NET Framework will be around for as long as Windows will be around, because Windows 10 and 11 require .NET Framework to run. So it’s not like it’s going away, right? And so there will be very lucrative work in legacy code using .NET Framework at some point in the very near future.

I believe it was Scott Hanselman, who said, “the enterprise is like an oil tanker: it turns very slowly.” And so maybe in the next two or three years, we’ll see big enterprises adopting modern .NET as opposed to sort of staying with .NET Framework. And like I said, there’s nothing wrong with that. If it works, then it works, right? Working code is infinitely more valuable than code that exists in your head. And so converting from .NET Framework to modern .NET, or .NET Core to modern .NET. It’s an exercise in initially losing money, and then eventually, hopefully gaining some money as the code starts to live and generate some money. So I can totally understand why big enterprises are very hesitant to immediately turn in that direction.

And, like you say, the naming convention doesn’t help, right? I think probably a few weeks ago, there was a tweet. And I bring this up not to upset or embarrass that people who put it out; but it was comparing Java to .NET. And you know, “.NET has one IDE, only works on Windows, and only does this, only does that,” and lots of people were jumping in and saying - essentially “Dude-Bro"ing - you know, “don’t you know that this is this is?” and you know, and it’s perfectly natural that they will have made that mistake, because like you say the naming convention is kind of the same, you know. Even though it was always known as .NET Framework. Those of us who worked in the trenches with it, we’re always known as .NET developers, not .NET Framework developers.

Mark

Yes

Jamie

So maybe we are as much to blame as, say, Microsoft and their naming convention. Who can say it’s for much smarter people that I to figure that one out?

Mark

Absolutely. And there’s therefore this big difference between .NET Framework with an uppercase F, which is the legacy, but as you say, it’s still going to get supported for at least a decade after the last Windows version gets released with it. So yeah it’ll probably still be here in 20 years, to be honest, someone in 20 years will be paid six figures to maintain that code. Because a lot of serious enterprise applications will still need it to run. Whereas .NET with a lowercase f framework, is equally valid, because it’s lowercase f framework. .NET is a framework, which just makes it confusing.

Jamie

It really does. I was actually having a conversation with someone a few days ago, as I’m recording this. And if you you know - if folks want to find out, we’ll put it in the show notes - where I’d said, “it’s interesting that WinForms, WPF, UWP, WinUI, and we’re still all using WinForms.” All of these technologies exist, but the majority of stuff is still, even new projects are built with WinForms. Just because if you’re only targeting Windows, you can literally drag and drop the controls, double click it and it builds the code behind it. So you can’t replace that productivity that help in order to do that.

Mark

You’re right.

Jamie

It doesn’t matter how flashy and modern, your framework is: drag and drop, double click, write your code, hit compile. You can’t be that can you?

Mark

That’s why Visual Basic was so big in the 90s. Because that was the concept: drag and drop, draw your user interface, double click, add a bit of code. And it was fantastic loads of very useful ,practical applications were built using Visual Basic in the 90s. And for the last 20 years, Windows Forms has taken that role. So yes, I have to admit, I was a bit surprised when Microsoft added back in support for Windows Forms for .NET, core 3.1. And now .NET five, and .NET Six; and they’ll keep maintaining that. For a 20 year old technology to be migrated officially, to their newest fastest platform did surprise me. But thinking about it, I can understand it. As you say, it’s still often the quickest, best, literally best way of creating a Windows app for particularly for an enterprise. Yeah. So it’s, and it’s good that Microsoft is still got a team working on that. And fixing issues like high definition API for your visuals, all that kind of stuff, they are still working on it. And it’s that’s why I think Microsoft has been so appreciated by a certain group of developers, because they do maintain that backwards compatibility. Microsoft is much less likely to abandon you, at least at least in the most important areas. I won’t mentioned Silverlight.

Jamie

There’s just thinking that. Yeah, and I think that’s that’s like you say that’s wonderful for the long term evolution, because then when, for instance, when .NET Maui comes out, I know that they had some problems, getting it, you know, battle tested and ready for .NET six, and that’s perfectly understandable. Making a cross platform UI framework is not an easy task. Right? And especially with the goal of, “you hit compile on a Linux and it will show you your UI. You hit compile on a Mac, it will show you a UI. You hit compile on a Windows, it will show you a UI. And they will all be very similar, but have the different operating system paradigms in there.” And I can’t even imagine what wizardry is going on behind the scenes to actually do that.

Mark

I 100% agree with you. I am in awe actually of the .NET Maui team. And previously the Xamarin Forms teams. I mean they what they have to achieve is is really quite challenging, very challenging, with desktop and mobile. So it’s got to work on Android. It’s got to work on iOS, not just phones, but also iPad, and then to support desktop as well. At a time when one of the biggest stories in IT is Apple changing their chip architecture, and architecting their own CPUs and GPUs. I mean, the M1 is probably the biggest change at least on the hardware side in a decade. And so for Microsoft to be one of the strongest supporters of technologies like like Mac Catalyst, which allows you to run your iOS apps on the Mac itself. I wouldn’t be surprised if Microsoft through .NET Maui has actually enabled, say, in two or three years time 90% of the applications that run on a Mac are written with .NET Maui. I, that’s a possibility. I’m not gonna bet on it. But I wouldn’t be surprised.

Jamie

Yeah, I mean, just think about how easy they’re making that step. I mean, we’ll come on to like .NET six and C# 10 in a moment. But like, that initial step of, “how do I make something with a GUI on a modern operating system?” They’re making that step so ridiculously easy. At least I believe that’s the goal of .NET Maui is that, like, you’re going to be able to drag and drop controls, double click, and there’s you’re wired up and it’s working is WinForms. But across, because it’s Xamarin Forms, right. So that’s essentially how that works. So if you’ve used Xamarin Forms before, it’s that but on multiple hardware, and just being able to just drag and drop buttons, double click, and there it is. It’s wonderous. And it will make things easier, but it will also I feel a boost to productivity, right? Because then you’re not having to spend time, and there’s nothing wrong with electron, I’m about to mention electron, there’s nothing wrong with it. It’s perfectly wonderful piece of technology. But in order to ship your electron app, you then need to bring along all of JavaScript, or at least all of the JavaScript engine. And there’s nothing wrong with JavaScript, but it’s a large dependency for what could be a very small application.

Mark

Yup.

Jamie

And so I fully appreciate that within the next couple of years, that productivity boost is just going to go through the roof. And like you say there is potential for modern Mac OS applications to be written in .NET Maui. Because why not?

Mark

Definitely. Definitely.

Jamie

Yeah, one framework, all the platforms,

Mark

Yes. And now a single project as well, rather than having to have multiple projects for all the different platforms.

Jamie

Mm hmm. Yeah. And it’s all about that simplification.

Mark

Did you happen to check in on the most recent stand up for .NET Maui? Every month, the .NET Maui team does this hour long standup where they talk about blog postings and what they’d be working on and pull requests from the GitHub repos, and so on. And the most recent one, I was quite encouraged because the first general availability release of .NET Maui - now scheduled probably for May 2022, or at least they’re officially they’re saying, q2, but I suspect may because that’s when the Build conference will be, and I think they’re going to really push to try and release the GA release, then. That version won’t support Linux with GUI apps. So although it will support Windows, and Android, and iOS, and Mac through Mac Catalyst, GUI on Linux isn’t possible. But what they mentioned is that you can do the develop interesting, you can do the development on Linux, you can write all the code, you can even test it with an Android emulator on Linux. But it can’t actually create a Linux GUI app.

But and what they’ve officially said is that they will, we’re hoping that they the open source community would help make a contribution to a Linux version that supports the GUI. But it sounds like the Microsoft team themselves, maybe in a year, if there’s genuine demand for that, then they might actually do that work. And that I know that there’s there’s a significant, let’s call it a significant minority, who would really love that. Because yes, that ability to code it cross platform, but also create a GUI application, truly cross platform, including Linux variants, that would be amazing. That would be truly amazing. And to come from Microsoft, with the history that they’ve had, is, is really quite wonderful to see that change.

Jamie

It is.

Mark

And it’s well deserved from their team, the developer teams across Microsoft support for open source for over a decade now. All of that work and that encouragement. It’s been really great to see

Jamie

it really is. And one of the things you said there was obviously you know, we’re talking about maybe in the future, there might be a Linux GUI with .NET Maui. And the thing to remember there is there isn’t one Linux in that there is a Linux kernel, but the desktop environment that is installed on top of your distribution of Linux, there are multiple layers of things that can change you can have just off the top of my head I know of there’s a gnome, there’s KDE, there’s XFCE, I believe there’s one called i3. So there’s four there that I know of, and that sits right at the top and then you’ve got all of your packages and the system setup and then you have the kernel. So if anything in that chain is different to what is expected by the runtime: all bets are off. So I feel like it is it a monstrous goal to hit and just doing Linux desktop GUI stuff, to me that would be absolutely wonderful. It will be like a dream come true. Because the amount have technical wizardry that will be involved in actually figuring out, “okay, what desktop environment am I on? What packages do I have access to? What version of the kernel am I on? Do I have AMD or Nvidia graphics hardware?” Which is a real problem in Linux at the moment. And then all of that, before you’ve even gotten down to the kernel level of actually, “can you draw this on screen for me?” It’s wizardry, is what it is.

Mark

Yeah, so it would be wonderful if Microsoft can at least do some of the harder work. And then maybe, particularly for a couple of those Linux desktop variants, and then perhaps the more obscure ones, they could maybe because it’s open source, then at least the hard work has been done, and that those Linux experts can then fill in the gaps.

Jamie

Absolutely. If they do something like, you know, the standard best practices for development, the sort of interfaces and segregation of responsibilities, then it should just be a case of areas, the interface contract that you need to meet, just write your class to actually do the drawing on screen. And we’ll wire it all up and do the rest for you. So I mean, who can say right? Yeah, absolutely. Well, I feel we veered slightly off topic there. But that’s good. I love being able to talk about this stuff, because it is, how do I put it, Microsoft got a bit of a bad reputation last year with a lot of things that happened in 2021, regarding Microsoft, and that has its time and place to discuss. And, you know, there is an episode about that. There’s a couple of things that we talked about with some one on those things. But I think it’s also good to balance that out with, Hey, look at this amazing stuff that they’re doing, right. And I feel like when you enjoy something, when you like to use something, when you have a specific tool in your belt, it’s always good to know the positives and the negatives about that thing, right? So you said the cross platform UI on Linux, maybe a thing in a few years, we don’t know, I’m not a Microsoft employee. And I’m sure we haven’t said it already yet. But as far as I’m aware, you’re not a Microsoft employee. So we can’t speak for Microsoft. There’s just a su talking about what we’ve read and what we’ve heard and what people have said. And I feel like it’s good to know the the positives and the negatives, because then you can turn around to the project manager to the client, whoever you’re building the software for and say, okay, we can do with this technology. But if you have a dependency on running it here won’t work. So we need to find a different technology. I feel like that’s a fair thing to know about.

Mark

Yes, I agree. It’s all about being informed, so that you can make decisions or make recommendations as well as possible.

Jamie

Absolutely. And just going back to something we said earlier, with .NET, six, and C Sharp 10. They’re making everything so much easier. I did. So I run on a Linux machine, I’m recording this now on a Linux machine. And I started a new project the other day, just some hobby stuff that I’m working on. And installed .NET six, I did .NET new console. And it’s three lines of code. It’s amazing. You know, previously, a Hello World was 11 lines of code. And if you’re teaching a new person, you have to say okay, do using system now do a namespace then do curly braces, public class, my class curly braces, public static, void main, a whole bunch of stuff in brackets, curly brace, console, dot write line, hello, world, brackets, brackets, brackets, run. Okay, now we’ve done that. Now I can tell you about all those things. But now it’s just three lines is wonderful is ridiculous.

Mark

Yes. And it’s a culmination of multiple, C sharp and .NET features, particularly over the last two versions. So the top level program feature, which allows you to not have to define the program class and the main entry point, combined with so that was introduced in C Sharp nine and .NET. Five, combined with some new features in C Sharp 10 and .NET. Six, like global usings, so that you don’t have to import all your namespaces at the top of every single class file, we can just do it once with global using system for example. And that works not just with a general import, but also if you want to do a static import. So you could do a global static using System dot console. And then you can use write line, literally just the method name, right, like anywhere within that application. And that really simplifies particularly lots of my code examples which use console applications extensively, because you want to really simplify it and focus in on the language or the .NET library function that you’re having happening to learn about at that particular moment. And then extending global usings with implicit usings. So in the project file, by default, when you create your new project, using a .NET six SDK, it will enable implicit usings for you. And what that means is it will actually create a global using class file for you automatically generated with about eight different namespaces the common ones like system, system link, system type and so on for multi, multi, multi threading and that type of thing. And yet, and so multiple of those features give us the ability to have a one line statement as the entirety of that console application. It does mean that new developers have to memorize or just no magic things like the OGS as the way of getting the arguments. But it’s easier to learn that than to start a new project, as you say, with 11 statements in it, and what is all of this stuff, and potentially having to when when I used to teach this in the classroom, I’d be like, right, just try and ignore all that for now. It’s a bit like sitting in front of and you’re learning to fly, and you’ve got all these dials and gadgets, slide, right, ignore all of that just focus on that dial in that dial, and this gear stick. But you’ve always got those students in the class who just can’t get over that it’s like, I need to know that now. And it’s going to bug them until until they learn it. Whereas now at least we can progressively disclose the complexities and power of C sharp, but when you’re first starting, you don’t need to even see it. Yeah, I love those new features, the implicit imports, the the global usings, you can do it yourself if you want to take control, and file scoped namespaces. So when you’re defining your own namespace, you used to have to say namespace, and then give it a name, marks library, and then curly braces, and then all of your code is indented inside those braces. Now, for someone who writes printed books, that’s a real pain, because it means all of the real code is kind of taking up space, and you’ve got limited horizontal space in a printed book. So personally, that’s one of my favorites. It’s a really minor thing. But what you can now do with C Sharp 10, is you say namespace marks library semicolon instead of the open curly braces, and then you don’t need the curly braces at all. And all the rest of the code is just assumed to be inside that namespace. No need for indentation, slightly cleaner for everybody. But really saves can make a big difference to people like myself. So I love that. And for vertical space, yes, that implicit import the implicit usings having to not not repeat all of that everywhere, that’s really good for saving vertical space and a print book as well. So I’ve been able to cram a lot more real code, meaty code, in my book, this time,

Jamie

I agree with you completely, because then, if I’m running a session, where I’m training some people are, I’m giving some advice to someone or they need to show on screen, a code sample, same thing, you only have so much green space. Yes. Especially if it’s in a presentation. Or if it’s in a video, you literally only have that much green space and the person who’s viewing it, they may be on a phone, in which case, they’ve got maybe seven inches of screen real estate to play with. And so you need to make the text big enough such that you can see it. But then as you make the text bigger, you can’t scroll on a video. So these things get get harder to do with these in the implicit namespaces, top level. All of that stuff, it just becomes so much easier. And I think it’s important to point out that if you fall out of love with that you want the old way back, you could totally do that. Because it’s just syntactic sugar, just making it easy if you start and you can, I believe there’s a there’s something in this in the seashell project, you just remove a line, and you’re back to where you were you just put the braces in. Hello, there we go. We’re back to where we were in Visual Studio and writer and Visual Studio code can help you with to put all of those back. It’s not a you know, it’s not a trivial thing. It’s not a you have to do it this way. You can if you like, I believe in .NET knew you can do a dash dash and say don’t do global USING statements don’t do implicit namespaces and it will just craft the same example. But with those 11 lines if you really want it that way. Yes,

Mark

that’s a good point. That sometimes developers forget is that a bit like we were talking earlier about how Microsoft is very tends to be better than most companies in being backward compatible. When new features are added to C sharp nine or C Sharp 10 or C Sharp 11 In November, you’re not forced to use those new features. There. They are optional, that syntactic sugar as you said, one of the things that I forced myself to do in the C sharp 10 book. The sixth edition was to not only use all of the new features, but also particularly target type new. So when you’re instantiating a new instance of a class A lot of people have got into the habit of using var so you might say var x equals new XML document something like that. Because var was introduced in C Sharp three back in 2008. Great for doing local variables meant you didn’t have to repeat the declaration of the type before and after the equal sign that type of thing. So it was a lot shorter. But with C sharp nine and later, you can now declare the type. So XML document space and then your variable name X equals and then just say new opening closed brackets, so you don’t have to repeat it at the end rather than at the beginning. And it looks really weird when I first started using that syntax, it looks really weird, it doesn’t look like C sharp, but you quickly get used to it, and you are saving those extra few characters. And it also works not just for local variables, which, which var is limited to only local variables, but also to say members of a class or type. So you can declare a public property, and then assign that equal to a new instance of it, just by saying equals new brackets, semicolon, so it works everywhere. So I’ve really tried to force myself to use it. And now I’m really used to it. And interestingly, I saw a LinkedIn posting couple of months ago, where they were showing all the different ways of instantiating an object, including the target type new and the older style and using var and which you prefer. And it was amazing how many comments were Oh, I will always use var and I don’t like this and blah, blah, blah. As I would say, look, try it, what you will get used to I know it looks weird at first. But I would recommend forcing yourself to try the new stuff. So every time a new version comes out, there’s this new feature. That’s an optional feature, that isn’t just something completely new, that is the only way of doing something, I would try the new things. At least pick one project and try it try to use it seriously in that project. And I think you might be surprised Microsoft doesn’t do things for for the giggles. They,

they, they think very, very carefully about things. In fact, in some ways. For me personally, it was quite annoying that they took so long to think about whether they’re going to introduce new templates for console new. Now, I’m probably the only person in the world that this affected. But it was very late in the process that Microsoft switched to using the new project template for things like console new. So from .NET, six, preview one up to .NET six, preview six in the summer. If you create new, due to the command, line .NET new console, you get the old 11 statements. And so most of my book of the sixth edition was written using that and because the first 13 chapters all start with that, I’d always start with, you know, typing .NET new console, and then in the main method, type this in. And then in Preview seven, they finally decided that they would switch to a simplified and use all the new features, which is wonderful for everyone except for me, because then I had to go back and rewrite all those first couple of steps to say actually, there is no main method anymore. So I need to rephrase how I’m going to tell you how to do this do this type of stuff. So yeah, but it was only because I was trying to write a book that gets released on the same day as .NET. Six, and they made this change. And it was particularly a bit frustrating because they made the change, but then said, Well, we’re not sure if we’re going to go back, we haven’t finally decided yet. So I was like, Okay, do I go go and now change to the new style, assuming that they won’t reverse their decision, or whatever. And so, yeah, it was a lot more extra work for me and the team at PAX, my publisher, but it’s worth it. Because we were able to publish a book one day, late one day after .NET. Six came out, which uses all the new syntax for C Sharp 10 and .NET. Six, I’m very proud of that. And the team that really worked very hard over their Diwali holidays, it was the week before and all this sort of thing. So it’s a bit chaotic. But that I appreciate that that’s very specific to my, my experience, hopefully .NET seven won’t be quite so bad.

Jamie

There’s a couple of things that you’ve mentioned there, their honor, sort of pick up on and then we’ll talk about the book if that’s alright. So the new features, you don’t have to use them, right? Think back to .NET Framework 3.5. And link came around. You don’t have to use it. But if you have a collection of things, or if you’re talking to the database, and guess what will give you this SQL like syntax, or, Hey, now you’re gonna have to learn what a monad is because now we’re doing functional programming by passing in a delegate, which says, you know, x goes to x dot select, where age is greater than two or something like that. And then people lost their minds. They’re like, why do I do why? Why would I do this in the database and it’s like, you can if you want to, or you can do it in code, if you like, it’s up to you. It’s up to you. Use case, if your use case fits well with doing it in the database, then totally do that. Still, there’s no one stopping you from doing that. But if your use cases, I’m going to hydrate, say 50 records, and then I want to filter on them. Or indeed, if I want to use an IEnumerable and IQueryable, I’m build that query and send it to the server. Guess what you can do select to where age is greater than a number, or select where first name has John in it or something, you know, you can do all of these things if you want to. But if you want to, and if your use case exists, you don’t have to use it. The .NET new console templates, I can totally understand why why the powers that be at Microsoft running the .NET team? Well, like, do we don’t we? You know, how do we introduce this new feature? Do we just make it on all the time? Do we make it conditional do you have to do something with the CLI to make it happen? Because whichever way they went, they would have upset somebody? Yes, I saw a lot of people during the .NET, six announcements, Gui, I don’t want to see these, this makes the code simpler. And I don’t like that for whatever reason, or I don’t like this because you know, I’m you know, I’m a bit long in the tooth. And I prefer to have all the lines, and I need to know what’s going on. Totally, you can you just pass in a command line argument and you get it back or within Visual Studio, you tick a box and you get it back or you’re in tick a box. You can use them if you want guess you don’t have to. And so we’ve we’ve talked a lot about .NET, and where, where it may be going and the lovely things we like about it. But we haven’t really talked about the book yet. So let’s talk about the book. So one of the reasons that I wanted to have you back on the show mark is because I quite literally recommend the previous edition of your book to people who are new to .NET programming, because I really do feel like because I haven’t read the the current edition yet. But the previous edition was very much I felt very geared towards beginners. And it was like, Hey, let’s take you through this. Okay, let’s start from the beginning, work our way up to a working project. And that’s that’s the important thing. Because, you know, I’ve been setting a bit of goal in in my own spare time, I don’t have anything to build in Go. And so all the information is going in, and it’s slowly seeping back out. Because I’m not using it in a real world application. And so I was wondering, what can you tell us the first of all, the name of the new edition of the book a little bit about it, if that’s alright,

Mark

so the title of the sixth edition is C sharp, 10 and .NET, six, modern cross platform development. And you could kind of divide it into three main parts. So after chapter one where we set up your development environment, and one of the changes I did actually make in the sixth edition, based on feedback from readers is in the previous two editions, I encouraged the use of Visual Studio Code, which is cross platform, because I did want to make sure that everyone regardless of where they’re running on Windows, or Mac, or Linux would have the same software in our code editor to go through all of the the tasks. But from doing a few surveys with readers, I came to appreciate, okay, a lot of people are Windows only, they are using Visual Studio 2022, sometimes called the full fat version of Visual Studio, even if it’s the Free Community Edition. And they would much prefer to have some instructions on how to use that. So in chapter one of the sixth edition, I do go in detail of both using Visual Studio Code Visual Studio 2022. And also actually .NET interactive notebooks, which is a really nice way of just typing in a little bit of code and just exploring and so on. I might talk more about those later. So then, the next group of chapters is about the language, the C sharp language. So you learn everything from declaring variables, to doing writing functions, and doing little unit tests and debugging to all the features of object oriented programming, from beginners, really total beginners, and I get you to build lots of little applications, console applications, so that you’re really focused on just the code, you’re learning one thing at a time, you don’t feel overwhelmed. But you progressively build up those skills a little bit like if you’re learning to be a great cook, there’s a lot of basics that you need to know how to use the tools and how to make a white source and that sort of thing. So you’ve learned the language in part one. In part two, I then move on to the .NET libraries. So that’s things like common components, like little Lego blocks prebuilt that you can just plug together to build features for any type of application. So pretty much all apps need to be able to work with a file system, or be able to work with a collection of objects, or dictionaries of objects to quickly look things up. And various other different Types of collection like queues and stacks, and things like that. In fact, one of the new types of collection that was introduced in .NET, six is a priority queue. And so instead of just having literally a very simple queue of items that get processed one at a time, instead, each item can also have a priority. So all of the priority one items get processed first, and then all of the priority two. And that happens every time it dq, US takes an item off the front of the queue, it’s actually taking looking at the priority as well live. So if you add another first priority item to the end of the queue, and it’s the only first priority item, it will still get taken off first, even though it’s actually the end of the queue. And that’s great for more specialized scenarios. And then we also cover things like working with databases. So that’s a external library functionality called Entity Framework core. So there’s a whole chapter on that. And you mentioned link earlier, introduced 15 years ago, almost now. But every .NET developer uses it. It’s such an easier way of working with sets of data, as well as working with literally databases interacting with that. So yes, the second part is on the libraries. And then the last part is on actually building real applications. So what are you now going to do with all these skills, typically most common thing building websites, or web services. So you’ll learn razor pages, which is a quick and easy way of building simple websites, the model view controller design pattern, which is for building more complex websites, which separates the models, the data that you’re working with, from the controllers that then actually execute code from the views, which then present that to the web browser, generate some webpage markup,

and building services. And one of the new chapters that I added to the sixth edition is covering more specialized services. So in earlier editions, I taught web API, which is all about building services that use HTTP, the protocol of the web, whereas this new chapter covers a whole bunch of other more specialized ways of building services. So building very high performing micro services, using G RPC, which is kind of very binary format, very fast and efficient way can use HTTP version to that type of thing, as well as extensions to web API’s, like OData, or other service type protocols like Graph QL, which is very popular, very modern way of maybe combining data from lots of different data sources, and make it look as if it’s just one endpoint that you can just request data, however you want it. So yeah, quite a lot in the new book.

Jamie

So I’ve had a chance to play around with some graph data before and what I really like Graph QL, sorry, what I really like about it is that as the consumer of that data, you can say, I want the data into shape. So one of the examples that I saw was the Star Wars universe. And you can say, give me the main characters, but just their first names and the planets, they’re from, oh, cool. And that’s the same request, as give me all the characters, which is the same request as give me all the planets, because you just say, here is the data I want back, give me all of the it’s almost like you’re doing SQL or however you’re doing it like is as a graph. And so instead of getting a huge chunk of information, you quite literally boil it down to, these are the things that I want, just give me what I want, which I think is wonderful. Okay, so like I said, with the previous edition, I had told, you know, people who were new to their to the whole thing, I’ll sit with you, and I’ll talk you through some stuff. But I think for more targeted learning, please go get Mark’s book. Is the new edition of the book still targeted at those beginners? I mean, you said earlier, and you introduce them to concepts, and then you build on those. Is it still for beginners? Like, can I having no development experience whatsoever? By this book? And still, I may still struggle in places, but can I still sort of power through and get through it? Or is it more a case of you need to have you know, you need to know what a compiler is you need to know what programming language is you need to know that a couple of those foundational things who, who’s who’s the target audience,

Mark

the primary target audience is still beginners. So I would describe as maybe beginners up to intermediate. I wrote the from the very first edition up to the very latest edition. I that is my primary audience. I’m always thinking in terms of what does a what would a beginner be interested in? What do they need to know now to then help build up that knowledge and So each chapter does deliberately build up in that way. But I was surprised when I did a few surveys last year, I was surprised how many existing developers really liked the book as well. And that’s because they might have learned C Sharp 20 years ago, 10 years ago, they might be using it everyday in their day job. But when you’re doing that, you can get into a bit of a rut. I’ve just moved to a little village, and we’ve got a couple of different cafes and restaurants in the High Street. And I’ve lived here for two months now. And I’ve found a cafe that I particularly liked. And I go there every other day, try not to have too many full English breakfast split. They’re just so tasty. But this morning, that cafe was shut, and it forced me to go to a different cafe. And they did a fantastic breakfast burrito. And so sometimes being forced to make a change, and see something new, can really help you broaden your skills and knowledge. So I think people who are experienced developers can still get value from my book, because they’ll pick up little nuggets of stuff, I never even knew that you could do that. Or oh, that’s an interesting way of doing it. And I get a lot of tweets and LinkedIn posts from people saying this and that, you know, I’ve been a C sharp developer for 10 years, and I picked up at least three things I never knew about. And it’s making a real difference to my everyday work. And I love hearing that. I love hearing from readers, and what they really appreciate, or even stuff that they don’t like about the book that can enable me to then identify areas that maybe I can make it better for everybody in the next edition.

Jamie

First of all, I love that metaphor of going to a specific Cafe every day and having a specific meal or every couple of days or every week or so, and then having to change because either there’s an alternative for that, you know, in your example, they were closed for the day. I love that example. And I’m always about metaphors, I’m always bad examples, because they speak really clearly to like the fundamentals of what you’re trying to explain. So I love that example. One of the things that we don’t tend to do as an industry these days, as I say these days, right? Unfortunately, the list is I’m about to get away my age. So if you don’t err old I am or how your name don’t listen, you know, as a 36 year old person who’s been in this business for around 15 years, I get told by those who are much senior to me, go read code, I don’t care what you read, go read code, go read code. And one of the ways you can do that is head over to GitHub, find a project and read it. Or you can find a book that has source code in it because the source code in the book has commentary around it, saying this is why I did it this way. This is why we do this way. This is how this works. Rather than just looking at you know, a bunch of C files, C sharp files JavaScript files going. But why did they do it that way. And so I could totally appreciate how these folks have gotten in touch with you and said, Hey, I’ve been doing this for x number of years. And here are some things I did not know, thank you very much for telling me not to diminish that achievement. But I feel like you can get that out of most programming books, or rather most of the good ones. Because there are some, some out there that are not so good. But I feel like you can get that out of a lot of really good programming books. One of the books that I recommend to people who are maybe intermediate to advanced level, or they have 567 years of experience under their belt is there’s a book called game engines, black book edition Doom, or game engines, black book, Doom edition, something like that, where the author takes the source code for the Doom engine, and breaks it down and says, Okay, this is the s part of solid. This is the O part of solid oh, by the way, this was written in 1992, before solid was a thing. This is the iPod of solid. And then you start to understand all of those memes about why do mum’s on things like a pregnancy test and a refrigerator? Because all of everything is so so interfaced out, everything is so segregated that all you really need to do is replace the visual layer and replace the controls layer. And guess what you got do running on whatever you bring it on. I’m a very keen video gamer. I don’t know whether that’s going across it. The you see it all the time in the circles. I mean, they’ve got it running on this, they’ve got it running on that they go. Of course they have, I understand why I’ve read the code is not funny to me anymore. But I feel like going back to my original point, I feel like it’s very important to read source code, and whether that’s in the printed form or on GitHub, but as long as it has commentary around it in the way that you read your books, you know, you say hey, look, this is what we’re going to do. We’re going to do it this way. Here’s how we do it. Guess what? We’re going to take these four lines of code and I will explain to you what it is doing. And I feel like that is something that sets you apart from the majority of the of the programming writers is that you can look at a page and go Alright, yeah, I can see why Marcus said right away This, because he’s explained everything along the way. Oh, cool. That’s how you do that. I always forget how to do into binary strings or, you know, if you I don’t know whether you use ternary is in your book because they kind of, for me, they go they make things harder to read. But then somebody could go, Wow, I’ve never used a ternary before. Here it is on page 72, or whatever. You know, I’m just, I’m just postulating here. Yes, because then they can forgotten how to do it. I remember it was beta. Oh, there it is. Yeah, so it’s results. Question mark. Thank you one colon thing you do semicolon, fantastic. Condition one, condition two or whatever. Excellent. I’ve got it. I’ve got a mate. Now I’ve got it sorted. So I can I can figure that out. And I think that reading code with commentary, so vitally important, regardless of where you are, in that, that experience ladder, I suppose I try and think of experiences something that someone just one person just progresses along, because you can have loads of experience in .NET. But what does that mean? Does that mean you’ve been doing Console WriteLine your whole life?

Mark

Yeah, I totally agree. Yeah, the more code with commentary that you can consume, actively consume, rather than just passively watching it, letting it wash over, you can’t engage with it, try writing in then try changing the code. See what happens when you do change, it is really valuable. And for your listeners, if they might be surprised to hear me say this. But as the author of one C sharp programming book, I do recommend buying multiple books. If you can afford it, of course, buy mine first, always buy my book first. But then, you know, have have a look on Amazon, see what other books are available. In fact, I’ll name a couple. C sharp in a nutshell, excellent book, if you only want to learn the C sharp language, and a couple of libraries, five years ago, before or six years ago, now I suppose before I’d written any books myself, I used to teach C sharp in the classroom to help students pass the Microsoft exam. And the book that I recommend to the training company to include with the with the official courseware was the nutshell book, because it really goes into language quite deeply. It’s 1000 pages. And if you want to focus on that, that’s a great book. And it’s a great book for a reference book as well. It is the definitive reference, I think they call it after doing my book. And you’ve you’ve learned the language, the fundamentals, the language, the libraries, you’ve built a few websites and services, you’ve got that broad view, and a lot of it hands on coding, so you’re really doing the work and learning it. Well. Once you’ve done that, a follow on book to that is C sharp in depth by John Skeet, another fellow Brit, he’s excellent really knows what he’s talking about. And that is a really good advanced C sharp book to really take things further. Yeah, and that will give you a slightly different style of writing slightly different maybe approach to the decoding of the C sharp, because just like writing English language, you know, right reading novels by different authors, they all have a different style, C sharp code itself, you do get these different styles. In fact, one of the things I recommend people do in the last chapter in the epilogue of my book, is I point them to the style guide, the framework, design guidelines, the architectures written by the original architects of .NET. This is how you should declare your variables. This is how you should do it. No pros and cons of do this, but avoid that. It’s excellent. Most of it is free online. And that really deepens again, you’re following best practices. Really, that’s a great thing to follow on from a book like mine that teaches you the, the How to tries to give you a bit of the theory and design guidelines and some good practices. But if you want the full list of best practices, that’s a great source.

Jamie

Like you were saying earlier on, use the metaphor earlier on if you use sometimes go to this cafe and have a meal there, they were closed out to go somewhere else. That was a great metaphor for, hey, why don’t you try this other way of doing something. But also, it’s a great metaphor for, let’s see what the other people in this space are doing as well. I think that’s equally as important. Because maybe not all developers, but a large set of the developers out there that have regardless of the language that they’re working in. A lot of them are very excited about what they’re doing and how they’re doing it and want to share that knowledge. And if you’re not ready and willing to listen, then it’s almost like they’re shouting at you and you’re just sort of staring at the wall. An ex girlfriend of mine once said to me she likes to read any book that anyone buys her as a gift. Because even if it’s not something he’s interested in, she will always learn at least one thing, at which point it is worth the six to eight hours it took to read the book, because the result a life lesson there is some sort of information to be imparted on But I have to agree that if you’re looking for some advanced knowledge about C sharp and .NET C sharp in depth is great, but it is very hard for a beginner to read Yes. Because, you know, from my understanding, John went and read the standard and when I can write a book about this. And so it’s very heavy on the actual implementation details and, and how the C sharp compiler works and how .NET works under the hood. And if you want to learn that one step below of where you are, or one step above, where you are, whatever hierarchy you want to use, it’s a great resource. But I think, especially for beginners, it can be a bit scary. So I would say go read Mark’s book.

Mark

Thank you, Jamie. Yes, definitely buy my book first, and then maybe look at a nutshell, or C sharp in depth. Yeah, it could do I think it’s now 2018, when the fourth edition was published, so it’s a little bit out of date as well, it only goes up to C sharp seven. So if you want eight, nine and 10, you’ll need to buy my book anyway. Absolutely.

Jamie

Get Mark’s book. But yeah. And I think the the point you made earlier on about in your book, you’re building towards something, yes. Here’s some foundational knowledge. But you’ll need that in a minute. Because we’re about to go and do this thing. I think that is very important. I’ve been reading a lot of different programming books, and sometimes in languages I don’t, I don’t work in I read one in Python, where it was like, Okay, so first thing we’re going to do is gonna write a web server. I’m not gonna tell you what any of it does. We’re going to write a web server. And I was like, No, that’s not how I learned, I want to know what I’m doing when I’m doing it. And I feel like, I feel like your approach fits, at least fits me and the people who maybe are a little bit like me a little better. Because like you say, you’re like, here’s a block of code. Let’s talk about what it does. Let’s talk about how it works. And then we move on, right? It’s how do we put it there, Charles and Mr. Winchester, the third experience of programming. Now, I’m not old enough to have watched mash when it first came out. But it is one of my favorite TV shows, and Charles Winchester. The third is a character who when he’s first introduced, he says, gentlemen, I do one thing at a time, I do it very well. And then I move on. And I feel like that’s very much a case of let’s learn this block, figure out what it does. And then we can add stuff to it. And then all of the code you write you mentioned earlier, and it becomes a Lego block, I can make this method make this functionality to do this thing. And then I can call it from somewhere else and add another Lego block on another Lego block. And guess what? Beginners, that’s how we build programs. That’s how we build our software. The most complex software in the world started out with how do I write something to the screen? Yes, that’s how they also,

Mark

and that actually fits in quite well with what you were asking about earlier about. Does the book work? Well, for beginners? And, and does it need, you know, do you need to have science, mathematics, STEM subjects, science, technology, engineering, mathematics type topics? Do you really need that to be able to be a programmer, and I think, although there are clearly, if you have strengths in those you’ve done those kinds of subjects, maybe at school or university, that’s definitely going to help. Because you will already have a certain amount of training, thinking in terms of problem solving and logic, etc. And a kind of scientific method approach to things. But I do believe that programming is as much about clarity of thoughts, and being able to break a task down into smaller pieces. So that fits in with the kind of Lego and taking things one step at a time, and doing one thing really well. If you are good at that type of thing, being able to look at this big daunting task, and be able to say, okay, take a breath. How can I break this down? And then how can I break those into sub tasks, because that’s what you’re going to need to do as a programmer, as a programmer, you have to explain all the details to the computer. And I think for beginners, sometimes it’s easy otter to someone who knows nothing about programming or computers, they assume things that the computer knows that it doesn’t. And as programmers, we learn what we cannot make any assumptions. What how many times does this thing need to loop around? Where or where, where can we get that information? And so eventually, programmers can look at code even maybe in a different language. And they can kind of see what it’s trying to do and say, Well, where is it getting that information? It must get that information from somewhere, otherwise, it’s just not going to be able to work. And when you get to that point, everything but cut becomes so much easier to learn and understand you can you’re almost ahead of the book that’s maybe explaining something to you. You can kind of say okay, you told me ABMC. But I know that you’re going to have to tell me something about DNA as well, eventually. And if it’s not there, you know something’s missing. Absolutely. I enjoy almost as much the educational side of writing a programming book like mine, as the actual technology itself, is how do you how do you teach it in a way that some beginner can learn and in an accelerated way, so that they maintain their motivations?

Jamie

It’s not an easy thing to do. I know that very, very well. I straight out of uni, I became a math teacher and doing that for high school students, I didn’t find it particularly easy. Because like you say, you have to find, where is the level that I can assume people are at? And how do I build on top of that, for one reason or another, there were some students in the class who weren’t so great at numeracy, but I had to teach them by theory and theory. So it became difficult to do that, you know, you kind of have to have a friend of mine talks about you have to have this foundation, you can’t build a house on sand. Yes. Because without that foundation, like you saying, I know about a, b, and c, because they are the foundation of the next step, which is learning deep. I find it fascinating how how people are able to take a complex subject like a programming language, and distill it down to a book where almost every page, someone who is new to it is learning something new. And moving on in that in that trajectory, without sort of bogging them down with too many details. And without, how do I put it, I strain on it. Okay, so I’ve told you this thing, I want to tell you it again. And I’ll tell you the third time, there is a fourth time. And guess what, on the next page, I’m gonna tell you begin finding that balance, I think is is again, I used the term earlier, and it’s wizardry. And, to your point, earlier on, you said about being able to take a monumental task and that monumental task, maybe how do I read this on screen? And it may be? How do I make a video game? Or how do I make a web service, taking that task and breaking it down into the smallest possible easiest chunks is the cornerstone of deliberate practice. And deliberate practice is how I tried to sort of train myself in learning something new, you identify the goal you want to reach, you identified the smallest possible steps that will get you towards working to that goal. And you work as hard as you can to reach that goal. And then you identify the next goal, and break that down into the smallest possible steps. So if your goal is I want to speak Japanese, you need to know that first of all, the Japanese is a language, and that he uses different set of syllables to how English works, and that the words are grouped together differently. There’s different grammar rules, once you start to learn the smallest amount of things. That’s why whenever you learn a foreign language, one of the first things they teach you is how to say hello, and then how to say my name is because then you’ve got a full sentence, you can swap things out, if you know my name is and you not say your name is just one word. And then if you know what my name is, and you want to turn it into my phone is my car is you swapping one or two words along the way, I’m greatly reducing learning of spoken language down a lot. Because there will be a lot of nuance, and there’ll be some languages have gendered nouns, some have all sorts of things going on. But being able to swap those out, is so important and breaking up problem down. There’s a thing called handmade hero, where a chap has been building a video game in C++, I believe, or C++, it may be C, but he’s been doing it in one hour since since 2014. Online, you using video streaming setups, every single line of code is his own custom code. He’s not relying on any libraries or anything like that. Everything is his own code. And to be able to do that, he didn’t set out one day and go, I’m gonna read again, I’ll just sit here and noodle around until I read the game. He’s gone, right? First off, I need to draw a window. And then I need to be able to change the color of the window. But before I can get to draw a window, I need to decide what operating system I’m targeting. And there are problems inherent with that. And then if I want to set a color, I likely need to use hexadecimal. So and then people who are watching, I need to teach you a little bit about hexadecimal and get you past that point where you understand it. And then the next step is and then the next step is and, you know, he’s breaking that huge, gigantic, colossal problem of how do I write a brand new custom video game down into the smallest steps. And I believe the latest episode he put out was de 289. can watch it one at a time, you’ve got almost a year’s worth of content, but that’s because he’s broken it down and he’s gonna write today will solve this problem tomorrow solve that problem. I think to your point there, mark it that is the way that you have to approach computer programming because otherwise you’ll just drive yourself insane going round around in circles and you won’t be able to get anywhere. So I think that’s a top tip from mark right there. After me rambling on For ages. Okay, so we were talking about the book, C sharp 10 and .NET, six modern cross platform development. We talked at the very beginning about how cross platform UI stuff isn’t quite there yet.

Yes? Does this mean that there will be a later addition? We use a, hey, let’s build a cross cross platform UI thing? Or is it something you’re going to sort of stay away from until it’s mature enough?

Mark

Great question. As the .NET, Maui previews were being released in synchronization with the .NET, six previews over the summer of 2021. It became obvious to me as I was writing the chapter about .NET. Americas I did want to have in the earlier editions, I had a chapter about Xamarin Forms. So since .NET, Maui is in effect, an evolution of Xamarin Forms. That chapter I was planning just to then rewrite it for .NET, Maui. But it became more and more obvious that .NET Maui was nowhere close to being ready. And it became an it because it was making it impossible for me to really get that any of the code in that chapter to even work. At a basic level, or when something did work a month later, it didn’t with the next preview. So it was a real challenge. And then in the end of September 2021, when the team made the formal announcement that they would delay by six months, so it wouldn’t be coming out with .NET, six in the beginning of November, and therefore more likely in May 2020 22. To me Tuesday. And so myself and the publisher, had to make a quick decision. Because that was right at the end of final drafts, everything had to be locked down at that point. And so what we decided to do was to finish off that chapter as much as possible. With preview nine, I think it was at the time. So most of it did, I managed to get most of it kind of working. But there wasn’t enough time to actually kind of give a lot of the more background about single projects for .NET, Mau, and things like that. So it was very much a kind of migration from Xamarin Forms to .NET, Maui, or as much as worked at that time. And we would include that as an official chapter, but only as a PDF that you can download online. So in fact, anyone, even if you haven’t actually bought the book, could go to the GitHub repository, and download that PDF, and you get a few extra chapters, like the .NET, married chapter. Now, that was, as I say, written for preview nine. So it works. But really only for Android, at the moment, at least the code samples that I I did, what I did, actually, all of just before Christmas, I transferred all of that chapter 19, to markdown format, so I could put it on the GitHub repository as well. And over Christmas, I then rewrote it and updated it for preview 11, which came out during the week just before Christmas. And so it’s been slightly updated. Also, during q1, we’re expecting one or two release candidates. So I’ll be updating again for a release candidate. And then probably a final time in May or June whenever they do the final GA release. So that chapter that was officially part of the sixth edition, I’m keeping updated, so that it’ll be ready for the final release. Now, it won’t be really what I fully want to write about .NET Maui, because there’s so much to write about it. And thing, just things like the single projects and so on. So it’s it will we’ll see how much I get done over the next few months. And until the end of q2. I would recommend though, you know, to be fair to my readers, I would wait for November 22. If you really want .NET Maui, that’s when I’ll be writing a lot more about .NET Maui. Ready and synchronized for the .NET seven release. I’m also hoping that with that release, they will be able to add support, maybe extension for Visual Studio code that maybe uses the NVu the kind of writing C sharp code style of defining the UI, that type of thing, a bit like swift UI, if you’re familiar with that. I’m hoping that they’ll have an extension that works properly. ready in time for November 22 as well, yeah. So if if you want if you want to start exploring .NET married today, you can do so you can download the PDF, go to my GitHub repository today download it, or have a look at this updated version, which is in Markdown format. You can go through it that that works. With the current previews, I’ll update it for the GA. But the big kind of detailed coverage of .NET, Maui, maybe wait till November. Does that answer the question? I know I was rambling a bit with that, as well.

Jamie

That’s fine. I do know a number of people who put out self published books on here is a book about version 0.1 of the thing, because obviously, they want to be the first person to read the book. And then by the time it’s released, version two is already here. But unless you’re using that super early version, the knowledge in the book is kind of not really, most of the knowledge in the book, sorry, is not really that relevant, because things have moved on. Right? Yes. And so I was just sort of anticipating a question about in the future, might then a revision seven revision eight of the book that has, you know, done a Maui in and I suppose, as long as it stays a going concern, and Microsoft are very, like you said very early on in this interview, not mentioning Silverlight, there’s not many times when Microsoft will invest a whole bunch of time in engineering something and then go, do you know what, this is too hard. I just, you know, digit because they know that as soon as something comes as a preview, people start building real world things with it. Yeah. And they’ll want to build real world things with it too. Because like you said, there’s no point investing engineering time, especially for something you’re giving away for free, if you’re not actually going to support it. So I can see dollar Marais being a huge thing, like we said earlier. Yes, I agree. Excellent. Okay. Where can people go to find out more about yourself, and, again, more about the book. So just remind us again, I’m very conscious that I want people to know that the name of the book, the title of the book. So would you mind reminding us again, the title of the book, and give us maybe a couple of places where people can go to maybe connect with you and find out more about about you and more about the you mentioned GitHub, I’ll make sure whatever links you mentioned, will be in the show notes. But I was wondering, Can you can you remind us of a few of those things, please. Yes,

Mark

absolutely. So yeah, that GitHub repository for the book is the best place to go. So that’s github.com/mark J price is my name. And you’ll see all of the GitHub repositories for all the different books, the different editions are on there. And so if you want to go directly to the C sharp 10 one, so that would be github.com/mark J price slash C, S ten.net, six, do t for dot, dot .NET, Six, but just go to Mark J price, you’ll find me on GitHub there. And then you’ll see all the repositories, I do have an author page on Amazon. But I won’t read out that it’s got a weird numbers and letters at the end. So I’ll just leave that for the link that Jamie will put in the show notes for us. You can also feel free to connect with me on LinkedIn. That’s Dub dub.linkedin.com/in/mark. James price. So you now know my middle name is James. But yeah, GitHub is probably the best place. Partly because you can not only get all the latest information about the book, I’ve got an errata on there. That’s a list of corrections, and improvements. It’s not just mistakes. Yeah, I do. Occasionally, I’ll make a mistake and get it fixed. It’s always funny to me that some of the corrections are for very small mistakes, but I’ve made maybe in multiple editions, but it’s taken that long for someone to notice or to raise it as an issue. Yeah, if you want to contact me raise an issue in the GitHub repository is probably the best way to do it. Get or connect through LinkedIn, whether you go to Amazon, and order the paperback or Kindle, or you can go to patreon.com. My publishers website, they actually do a nice deal where you can buy both the paperback and the ebook version, in Kindle, PDF, and EPUB, or all the different ebook formats. So that’s quite nice, because then you get all of it, the paper and all the different ebook versions, if you go to packed and there are various different local bookstore should be able to order it for you as well, at least in most Western countries. I have quite a big following all over the world. And I know that for some countries, it can be very expensive to get paperback books.

Jamie

So I guess all the really remains the same mark is thank you ever so much for spending part of your afternoon with me and I hope you all the best of luck with this new edition of the book. And there’s a space here if you want to come back and tell us about edition seven edition eight. What I’m happy for that. That’s not a problem because I’ve had an amazing time talking with you and not just at the beginning where we were gushing over, hey, this bill is great. This is great. This is great. But you know, also as a as a fellow educator, no, I understand that. My experience of education working An education isn’t as say as details as yours. But being able to cross pollinate those ideas is great. And I really appreciate you taking some time to talk with me today.

Mark

Thank you, Jamie for inviting me and hosting me on your podcast. It’s great to be able to have the opportunity to enjoy chatting with you, and also speak to your listeners and hopefully give them some entertained infotainment. Is that what we call it these days?

Jamie

Yep, that’s it. Excellent. Well, thank you very much.

Mark

Thank you very much, Jamie.

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

Wrapping Up

That was my interview with Mark J Price about how C# 10 and .NET 6 have both made it a lot easier for beginner developers to get started in development - whether that’s in a classroom or a self-guided learning setting. Be sure to check out the show notes for a bunch of links to some of the stuff that we covered, and full transcription of the interview. The show notes, as always, can be found at dotnetcore.show, and there will be a link directly to them in your podcatcher.

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

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

Follow the show

You can find the show on any of these places