Interactive C# with VS Code Notebooks with Eric Potter - NET 207
VS Code Notebooks provides a way to write quick interactive C# along with documentation to learn and train with.
Special Guests:
Eric Potter
Show Notes
VS Code Notebooks provides a way to write quick interactive C# along with documentation to learn and train with.
Links
- .NET Interactive Notebooks
- Aptera Software
- Humble Toolsmith
- Binder
- Project Jupyter | The Binder Project
- LINQPad - The .NET Programmer’s Playground
- Twitter: Eric Potter ( @pottereric )
Picks
- Eric- Concurrency in C# Cookbook
- Shawn- Band | Rush.com
- Wai- Cloudflare DNS provider
Transcript
Hello, and welcome to another episode of adventures in dot net. I'm Sean Clobo, and with me today is your co host, Wylu. Hello. How you doing? And happy birthday, Caleb.
Since you're not here, you're out having fun. So Mhmm. Caleb's not gonna make it today. This kid will dress up today. He's gotta get dressed up.
Well, at least he can go out. You know? He's got vaccinated and all that kind of stuff. So Yeah. Hopefully, everything's good down in New Orleans.
I don't think he has to, like, dress up and then also have to wear a suit, chicken, or I'll say a mask or a jacket? I don't know. I've met his wife really to say, you know, is he gonna make, you know, how how fancy is a dress up gonna be tonight? So it depends on where he's going. Traditions in New Orleans, maybe.
Yeah. So anyway. So yeah. They got weird traditions in New Orleans. So strange.
Yeah. Right? Right, Caleb? Oh, yeah. You can't tell me.
So why today on the show, I think we're gonna go back to school. I heard we're talking about notebook notebooks. Yeah. You know? I remember those in college.
Or maybe that maybe it's not that kind of notebook. They look different today. Notebook computers. No, not notebook computers. Why don't we welcome our guest, Eric Potter.
Welcome, Eric. Thanks guys. Great to be on the show. Looking forward to talking with you guys. Good.
What kind of notebooks are we talking about today? Let's start with a little background because this is one of those concepts that became big in another part of the developer world and is starting to make its way into the dot net world. But there was this idea that really started in the Python space with a tool called Jupyter Notebook Notebooks. And the idea is that you can have an interesting mix of code and text. So you can have a document, this Jupyter notebook document, where you can alternate back and forth between having text in markdown and your Python code.
And the code is actually organized into these little cells and each cell is defined independently. Right? So you could just have like 8 lines of code and you could run those 8 lines of code independently. And in the Python space, this kind of became big in the data community because you might have a few lines of code where you pull in a bunch of data from a CSV, and then you take that data and run it through a charting library, or maybe you just wanna blow it out and filter it in a table, or you know, maybe you want to do some aggregations on it. But as you're doing it, you can be documenting what you're doing, and then that documentation either then lives for you or lives on for someone else to take over this notebook in the future.
But either way, we now have a way to have a much more interactive experience than a historical Python programming experience where, you know, you would write the Python file and then just execute it. So this concept is making its way into the dot net space with these dot net notebooks. And so there's a couple of terms here. There is the Visual Studio Code Notebooks, which that is what allows you to have these notebooks in Visual Studio Code. And then there there are a couple different variations on that.
So there you can have, the c sharp, f sharp, and JavaScript notebooks. There's actually another kind of notebook for SQL. And so you can have these different interactive environments right in Visual Studio Code. It used to be I think in Python, you kinda had to have a larger tool called Anaconda installed to be able to create Python notebooks or Jupyter Notebooks. And there had been an earlier version where you could run c sharp in an Anaconda notebook, but now they've got it so you can do it all in Visual Studio Code with the Visual Studio Code extension for dot net notebooks.
So it actually Go ahead. Why? So it actually runs the code, is it? So you've it's kind of a way to, I guess, start notepadting, start documenting something, but by putting code that actually runs. Yeah.
So let's say that you are exploring or documenting something in a new NuGet package. So maybe something like system dot text dot JSON, and you wanna see how that serializes your objects. First of all, there is a special syntax for pulling NuGet packages in. So, you know, with one line of code in your notebook, you can pull down a NuGet package and start working with it. And so then you could define your object, and then you could serialize and deserialize it right in the notebook.
And you could see the string output that you're getting when you serialize it. And if you wanna play around with the different serialization options, right, you just have a block of code that's like setting those options differently. You can run it like, okay, I wanna see what happens when I serialize it with this option on. K. Now I wanna see what I'm gonna change the option.
I wanna see how it serialized with this set of options. And so it's very interactive in terms of, you know, having chunks of code that that you can run. Most developers that I know, especially c sharp developers, have some folder somewhere on their hard drive that has, like, console application 1, console application 2, console application 75, you know. Right? Because there's always those things where it's like, oh, I just I need to be able to drop in some c sharp code and see what this does.
Well, the nice thing about these notebooks, it's like, oh, I could just drop in here and and see what happens. In Visual Code, Visual Studio Code obviously opens really fast, so it's a really nice way to quickly get in there. Mhmm. But then the nice thing about it is that these notebook files have an extension of ipynb, which is a Python holder. So, Python holdover from interactive Python notebook.
So ipynb. And that's still the extension even if you're using c sharp. So any language would still be the same extension? As far as I know. And c sharp is the one that I've done the most with.
I mean, I'm that's just the language I work in the most. I've seen really interesting demos with f sharp. I know it supports JavaScript as well, and those are all the same extension. But I could, you know, take that I p y n b file, which is just a JSON file, and, you know, check it in or I could email it to my teammates. And so maybe I wanna document, like, hey.
Here's how we're gonna use the serialization technique on our project. And instead of just, like, writing up an email and sending it to them, like, hey. Here's this here's this interactive bit. You try it. See if, you know, if see if you agree with my decision.
I am. So can you pull in, like, different libraries and things like that, or is it just is the context just whatever you're coding on local variables? No. So you can reference assemblies that are on your machine. So if you have a, you know, a class library that you're using in whatever project you're on, you can reference that right from your hard drive.
Or like I said, if there is a NuGet package, you can pull that down too. Oh, okay. Yeah. Cool. So is it like a like a Wiki with executable stuff in it?
That's a really interesting way to think about it because like a lot of Wikis, it does support markdown. Right? So I could I could have tables. I could I could actually have images if I want, you know, because markdown has syntax to pull in images. So, yeah, that's a really interesting way to think about it because it is kinda like that.
I was like, yeah, it's it's a wiki that but you can actually execute the code right there. I did notice that, like, Stack Overflow. No. I think it has something similar to that in in which when you pay some code in, you'd have to stop the option to run it. If it's a certain language, then it actually shows you the output as well.
If you if you quote a block of tech block of code. So, yeah, I can see it myself using it as well because, like, for me, like, now you're going on about, you know, developers using the console app 123. I'm really big on documenting literally everything I do. Like, when I program, maybe, like, 25% of my time is just going back in every, like, error message or or whatever. Or even if I solve a problem a certain way, I'll just I'll just whip up a note and just document it.
You know? Just speak as I, I've got a I've got a bad memory. You know, like, and, you know, like, there's so many times I've gone, oh, I've fixed this problem before. And it's like, oh, but where do I look kind of thing? So so, yeah, I could I can really see myself using this and and then just kind of putting in code that'll just run for me, you know, instead of just putting a block of code, that may or not may not run.
So yeah. So how do you get started? You know, what's it what's it take to get started? What's a good place to start at for somebody that's hasn't done a notebook before? Alright.
So in Visual Studio Code, if you go to the extension library, then there is an extension you can search for called dotnetinteractivenotebooks, and it is still listed as a preview, but it's really working pretty well. I've had it installed for a couple of months now. But if you install the preview, then you can start creating these notebooks. There's actually some new commands that they have in the Visual Studio Code command bar. Looking at the documentation here, you do obviously have to have Visual Studio Code installed and you have to have, dot net 5 installed.
I guess I was it's at this point, it's kind of a safe assumption that all developers have Visual Studio Code installed. That's becoming very ubiquitous. You do need the dot net 5 SDK installed as well, apparently. So what about if you you said you could just, copy these NuGet files to other developers. Like, if you got NuGet packages, do the NuGet packages kinda come or at least the references come with the file, or is it just an assumption that they would have it installed?
So there is actually a special syntax for pulling down NuGet packages. So again sticking with the example of system.text.json, if I have near the top of my notebook file pound r quote nugetcolon system.text.json, right? So that line of code, when I execute that line in the notebook, then it will install that NuGet package. Yeah. And so what I could do, you know, in the case you're talking about where I if I email you my notebook, you would have to execute that block.
But then once you had done that, then you would have the NuGet packages downloaded and installed. Now, obviously, you can use that pound r syntax to reference assemblies that are on your hard drive. And so, like, if if I was just, like, referencing something that where the path was, like, c colon users e potter, right, then that wouldn't be on your machine. But, you know, if I was actually using a NuGet reference, then then you could download it yourself. So what do you what what what use cases do you see for, for this?
Like, I mean, I I can identify that for me. It'd be mainly for documenting my own stuff. But do you see any other use cases that might be useful? So, yeah, documentation, I think, is a big one. I think the one that pie the Python community has really embraced is this idea of data exploration.
Mhmm. And I you know, and I'll include code exploration in that too. But a lot of times we're working with a large dataset, and, you know, we could query it in, you know, SQL Server Management Studio, but and or maybe maybe it's comes from a CSV or, you know, some other data source. And what we want is the ability to look at some data, do some kind of aggregation on it beyond what we could just do in SQL, maybe generate some charts or generate some other kind of visualization. And I could do that really quickly.
One of the the things that Microsoft kinda touts with their notebook extension is that it's got good support for a library called xplot.plotly. So what you could do is you could have some data source that you're gonna pull in and then render a visual using x plot and all that right in the notebook. Now the nice thing is that because it's interactive, you know, you could be maybe tweaking your filters and then tweaking your visualization or tweaking your data source, and you can kinda you have this really fast feedback loop of, you know, being able to really tweak the the experience that you want. You can tweak the visual you want really easily. So, yeah, there's that whole exploration.
So I'd say that's probably the second big use case. The third one, and maybe this is a little more specific to me, is actually with teaching. So I spend a nontrivial amount of time mentoring developers at my employer. I work for a company called Appear Software, and we're really big on, teaching and training and empowering our younger developers. And so I could see myself documenting some, like, fundamental concepts and and handing this over to them.
I also sometimes teach as an adjunct at a local university, and having the ability to have this interactive teaching tool, I think, is really powerful. One of the challenges that I've always had in the past, no no matter where I'm teaching, is that which mechanism do I want to use to teach about code? So I could just have c sharp code with comments that explain the concept as as we're trying to go through. But that has some limitations. There's there's no graphics.
I can't, like, have a an image that's that shows up in comments in a c sharp file. You know, a lot of teaching historically has done with PowerPoint, which in PowerPoint you have the opposite problem where you can have all these really interesting visualizations, but then the code is maybe just a screenshot, and so it's not interactive at all. I think having notebooks becomes this really powerful teaching tool where I could say, okay, here's the concept. Maybe I've got some graphic that represents what conceptually is trying to happen. But then I can have the code, and they can run it from themselves, and they can change it, and they can explore and see what the code does.
I think the other thing that could be really interesting is that you could almost have, like, interactive problems as you go. So you're explaining a concept to me, like, okay. Now you write the 10 lines of code that generate this output, And so you could learn in a much more interactive way without, you know, having to subject yourself to the limitations of only code or only PowerPoint or whatever. Yeah. That's really cool.
So can you embed it into a, like, a web page? You think? That's what I'm thinking. Like the, as your professor puts an assignment up and, yeah, you literally, you know, has the description in markdown and charts and more stuff. And then they just fill in the, the, the, the, the code bit.
So I think from the things that I've read, and I don't have any special knowledge here, but I think that is something they would like to get to. But you do have a challenge there in that if it's running on a web page somewhere, you have to run the c sharp compiler. Oh, yeah. So you have the back end or maybe use assembly web assembly or something. Yeah.
Or something. Yeah. Maybe. There's a really interesting potential there that, like, could you run Roslyn in in Blazor? I I don't know if that's a thing that you could do or not.
Maybe it is. I know that one of the things I think they were doing with the the try.net website, I think maybe with that, they were actually shipping the code back to some server for it to be compiled and they would send the assembly forward. They switched that over to Blazor. So yeah. Okay.
So maybe and maybe that's the thing is that these notebooks will eventually be able to run right in Blazor. The best solution I've seen right now is that there is a website, again, from the Python community called binder, and you can post notebooks on binder. And binder does support the dot net runtime. So you can run your c sharp notebooks on binder if that's how you wanna share them. Well, you said it also supports JS as our own.
Yeah. Yeah. JavaScript. So Yeah. Maybe that part of it, you could, but yeah.
But you said it's also just in preview, so maybe it's a, it is just a feature that they haven't got to yet. Yeah. Is it a, is this a Microsoft creative thing or Yeah. The extension I was gonna double check. Yeah.
The author on the extension is Microsoft. Alright. Cool. So is it is it limited to like console type applications? You talked about x plot, but that's not really like a GUI type of thing.
So where you can build forms or do some sort of interactivity. So one of the things they have built in is a display method. So if I have an object, I can display that object and it will render all of the properties and their values in a table. So there is a little bit more that's graphical than just, you know, standard console output. I don't I it's just not something I've run into.
I know that there's different HTML output options you can do. I I can't speak authoritatively to those. And I did just see on Twitter very recently someone from the community added a plug in that could render Razor. And so then you could have a notebook that could render all kinds of different, you know, web outputs with know, anything you do with Razor, you could do it in the notebook. Again, that's on my list of things to investigate.
I haven't looked at at what they've done yet, and I don't know how stable that package is, but I am very excited about it. So it it displays the output of the code you run to the I'm guessing that then it assumes that the code that you run has to have a determinant output. Like, you couldn't just put like a mass dot random path in there because it would just be a a line in there that would just give you a completely different output every time we run it. What would happen then? I mean, you could certainly have random outputs.
Right? As if you had a random number generator and you wanted to run the code block, which they call these blocks cells. Right? So you can just execute the cell over and over again. Yeah.
Like any programming thing, you wouldn't want your cell to get stuck in some kind of infinite loop. But Yeah. Assuming assuming that your cell does run to completion in, you know, same amount of time, then, yeah, it would display the output. So so so does it run at every time you open the the file, or does it run at once and then store the output? So each cell can be executed individually.
So there's actually a a little graphical play button. So let's say I've got three lines of code in one cell and I hit the play button to execute it, or there's a keyboard shortcut for it too. But I could then have my markdown that explained what just happened. Like, I have another cell and can execute that one. Now all of these cells execute in the same scope.
So maybe I want to define a class in one cell and then, you know, have some explanation and then instantiate an object of that class in a cell that's down lower, then you could totally do that. Like I said, I was teaching a local university, and I was trying to explain the concept of inheritance and overriding. Right? And so we had this notebook where there was a class at the top that had some virtual methods and then there were cells down below that had various iterations or, you know, various versions of how you override methods and what that looks like down below. So Yeah.
I think there is also an option to just, like, execute everything in the file if if you just wanna jump right to the end. Yeah. I can see myself using it quite a lot for presentations and things like that. Like, I run a local meetup as well. So it'd be, it'd be a really good way to illustrate code that you're trying to run just by running it one bit at a time and then putting some nice markdown, you know, describe what you're doing.
Yeah. I imagine that going forward that when I'm, you you know, in a in a user group scenario or just explaining something to my teammates, anytime when in the past I would have thought, like, oh, I'll just drop this code into PowerPoint. Like, I think probably going forward, I'm just gonna use these notebooks. Yeah. So I've typically used, like, link pad for making my little one off Mhmm.
Test applications and things like that. This sounds like a better way to to to be more organized with multiple, you know, test apps and things like that, you know, with documentation. So that's a really interesting comparison. Right? Because Linkpad is a wonderful tool, and I don't wanna say anything bad about it.
But it it has a little bit of a different goal because you can't have markdown. Right? So it's a great Linkpad is a great way to say, here's these 30 lines of code or these 15 lines of code, and I just wanna execute that. But can I hit the database? The the notepad stuff?
Linkpad? No. Notebook? Notebook. Yeah.
Because, again, you could pull in A NuGet back. Yeah. A NuGet package. Right? So there's no reason why you couldn't use any framework or Mhmm.
You know, one of the micro ORMs, whatever you wanted to do. But, yeah, getting back to Linkpad, I love Linkpad, but it's more that's more of like a like I just wanna try it as a small snippet of code. If I want to try it out and document, then I would lean towards notebooks. Yeah. And the the other tool in this space that I think is one of the best kept secrets in the dot net space is C Sharp Interactive.
You guys ever played around with the C Sharp Interactive Environments? No. What's that? The Live Share or No. So Live Share is also delightful.
That's a whole another thing. Right? So if you have Visual Studio 2019 installed, if you open the developer command prompt and type c s I, you will be dropped into an interactive c sharp environment. Right? An environment that is, you know, what are often called a a REPL, a read eval print loop.
Right? So you have the ability just at the command line to start dinking around with different c sharp code snippets, you know, which can be really useful. I don't the 2 things that I end up using it for are more sophisticated versions of what you can do with string dot format. Right? Because there's always that thing, like, oh, I know there's a way I can format this date, and I can't remember the exact syntax.
If you if you wanna specify how many decimal decimal places you want after a number and string that format, like, I can never remember the exact syntax, and I could Google it, or I could just open c sharp interactive and and try it right there. And then there's also a c sharp interactive window in Visual Studio. So if you already have Visual Studio open, you can, drop in and check out, you know, just small snippets of c sharp code. So, again, that's not exactly what I was here to talk about. But if you're new That's cool.
Yeah. If you've never played around with c Sharp Interactive, which, like I said, at the command line is a CSI. If you have Visual Studio installed, you already have it installed. So, yeah, absolutely check that out too. That seems like something to be should be more prominent in the in the ID to to discover it rather than have new one to go to developer comp command prompt, and then type CSI, and and then do all this stuff.
Well, and you can get to it in Visual Studio too. So if you go to the Visual Studio tools window I apologize for not having it open. Like, if I think if you just go to Visual Studio was it, like, view or views? Yeah. You can find c sharp interactive right in there.
It's pretty cool. It's hugely underutilized. Alright. So And, there you go. Oh, go ahead if you got a question.
Yep. I I was gonna say, like, with Visual Studio, I can kinda understand because it is such a big application. There's probably things that I I've worked on a few years, and I probably haven't discovered that it can do. It's too big. So what else should we know about notebooks?
You know, it it just sounds like something that maybe a lot more people should be messing around with and posting things or letting people know about this. Because I've heard about notebooks, but I didn't really understand it until now. So you've you've done a great job at explaining, you know, how I can, you know, start using them. I don't know if there's a whole lot else to say just because there's you know, once you get into it, it is a pretty straightforward thing. Like like, one it's it's very obvious where you'd wanna have code and where you'd wanna have markdown.
UI is really intuitive. I would just encourage people to go and play around with it. So how do you organize there's notebooks. So is each file called a page, or how do you how do you organize lots of different things in together? I've never really that's an interesting question because I've never really had to think more hierarchically.
Most of the notebooks I've personally created kinda make sense as a stand alone thing. Like you you don't really have a a project file of notebooks. You just have the notebook file. That is an interesting idea though. I I would be curious to know if if there's a better story for that of like How would you organize multiple notebooks that are all related?
Yeah. Yeah. And, if you look at the the GitHub project that Microsoft provides that has their notebook examples, you know, it's just a it's just a folder with a bunch of these IP and YNB files in it, but they're not necessarily organized into a project. I wonder if there is a get to a stage where, like, the the features of the notebook could be used in a normal, like, CS file. You know, like, just avoid, like, wondered that, you know, that instead of just being able to comment things, can putting in markdown and things like that into your just your normal source code.
I'm not sure if it's a good idea or not, but, just wondering. And it is an interesting idea where you could have a CS file with an image in the comments. Yeah. You know, I've definitely I've definitely worked in situations where the the code was maybe documented as a flowchart in Visio before it was ever implemented. Right?
And could you just, like, have a screenshot of that that Visio diagram? Like, hey, here's here's the decision tree that we're working from. Or I suppose the other thing that'd be interesting, one of my clients does a lot with CAD. And so a lot of times we're writing code that manipulates objects that started somewhere in CAD. Like, I could have an else case.
It's like, this else case exists to cover this this diagram or, you know, this modeling concept. That'd be I'm sure there's good reasons to not bring images into CS files, but it does seem like it would I think probably like source control might look a bit weird if you have you know, source control is designed for for text. Right? So Yeah. You start putting images, it it may look a bit wonky and hard to use.
But, yeah, I don't know. Yeah. It's it's it's interesting to talk about because you don't know what the consequences are. But because it it is it is so once you open that can of worms, you know, you can do so much. So that's, people putting in videos into your source code.
No. Well, in some of the languages have opened that can because they now allow emojis in variable names. Oh, gosh. Fuck. How would you do that, Ed?
I, if memory serves, I think Swift allows you to have emoji named variables, which I could, in some cases, see would be really powerful and expressive. And in some cases, I think, someone used 3 of the poop emoji as this variable name. Like, how do you can communicate that with your, you know, dev meeting? That variable here with 2 poos and 231, you know, like, that's not assigned. You know?
Like Yeah. That's just And then everybody's gotta agree with what the name of what that emoji is. So, yeah, you know, refer to it. It's gotta be you know? Some call some people call it crap.
The other ones call it poop. You know? Yeah. So I I did find it in the ID. It's under view.
You have to go to other windows. There you go. And you have c sharp interactive. And there's f sharp interactive as well. Mhmm.
Cool. So it is, like, OneNote. Can you do these types of notebooks in OneNote? That might be a way to organize them together. As far as I know, there's no way to do that, but I also love OneNote, so I would be thrilled if that was the thing that OneNote could do.
Yeah. That would be cool. I think it'd be it'd be good if OneNote supported markdown, actually. That that would be the a good step forward for them because, you know, a lot of times I'm pasting code and I'm pretty reformatted my stuff first. So Cool.
Yeah. And, yeah, thinking about formatting code, it is worth noting that the Versus Code Notebooks extension does have syntax highlighting. It has IntelliSense. And yeah. So it it looks like proper c sharp code.
Yeah. Keyword And you can debug line by line? And I'm guessing, like No. There's not a debugger for it. Not not yet.
So you can't you can't step for it. Okay. I would thought for an educational tool you'd but maybe it's a sign that they'll they'll put in, like, eventually. Yeah. I think the workflow would be more something where you would I think instead of debugging, what you would do is you would just have 3 lines of code and display some output and have another couple of lines of code and display some output.
That's right. Yeah. Cool. Well, I I think I'm, really, you know, kinda kinda anxious to get out there and and play around with this a little bit. Yeah.
So How's it acceptable? Go. We should stop the show. Stop recording so we can go play with the code. Yeah.
Yeah. I like it. Or let's at least move on to picks. Let's do picks before we stop the show. Alright.
Why what do you have for your pick this week? Okay. So my pick's a little bit different this week. It's not a fun thing that we usually do. So it's actually I wanted to It's good.
I have a different pick too. Oh, cool. I want to give a shout out to Cloudflare's DNS provider. So, I mean, people probably know because we're all programmers here, but the Internet's the the how the Internet's designed is actually, like it's it's actually been fairly broken. It's haven't it's never really been designed for privacy.
And although these days, almost every website uses HTTPS, that's really that's a really good step forward, but that's actually not completely hiding all of the the things you're doing. One one thing that one way that people can, I guess, listen on what you're doing is using your DNS lookups because DNS usually isn't encrypted? And then just, you know, it's usually your DNS provider is usually just with your ISP and there's no, I guess you you have to check whether your ISP is logging or your DNS lookups. And they are then essentially all of your all the websites you're going to is essentially stored against your your IP address. So Cloudflare is actually provided like a like a public DNS provider, which you can, I guess, point your DNS lookups to?
And that that builds it, I guess, with privacy in mind, so it's all encrypted, the traffic, and they've they've guaranteed to not log your traffic for longer than 24 hours and things like that. So, yeah, I thought more people should should do it. It's really easy to to set up. Just point your DNS lookup to 1.1.1. And I had to do a rate about their their business model, and it seems pretty legit.
Like, they're not the reason they're doing it is is to improve their services. The because they're I think they're like a CDN company. They're all about trying to make their clients' web pages faster, and this allows them to essentially improve that improve that offering. Yeah. One thing for today?
So probably Google's 8.8.8.8 is probably not, so private? Well, I guess it depends on which company you trust. I don't know. Like, we probably shouldn't go too much into that, but, yeah, like, I I think cloud I I read I read cloud justification, and I was like, okay. Cool.
You're not you're not gonna take my data. I can't see you wanting to do that for but who knows? No. Also, I think the cloud thing gets the offering gets independently audited by KPMG. So I'm not sure what that means, but I'm guessing it's it it makes it more independent.
But Okay. So my pick this week, I is a little bit different because it's something I don't think we've ever had as a pick before. I don't think ever anybody's ever picked music or a band. Uh-huh. We've been on we've been on for over over a year now, maybe a year and a half or something like that, and nobody's ever had a band.
I feel like I did the Smashing Pumpkins once. I was it. But yeah. For Halloween? No.
So so one of my favorite bands growing up, was the band Rush. So it kinda shows my age a little bit, eighties kid, things like that. So, you know, recently, the the drummer of the group died, but he was, like, one of the best drummers I've ever heard in the world. He just just very artistic. He wrote a lot of the songs and music, things like that.
So, you know, go back to the some of their greatest albums, so, like, Moving Pictures or 2112, things like that. So if you wanna hear a good rock band, you never heard Rush. They're actually from Canada, so check it out. Yeah. Alright, Eric.
I'm gonna stick with the technical pick, and I apologize for not having something more creative. But I've recently been reading the concurrency and c sharp cookbook by Stephen Cleary. And it is not a thick book, but it's got some really great technical detail. I thought I understood async and await in c sharp, but I have learned so much reading this book. And it's a lot of information.
It's very practical. So I should check it out. My books aren't fixed. So Yeah. You think it would wait?
Yeah. If you delve into that, that's, the the state machines and all that kind of stuff can get get really funky and and really complex. You really grasp, the entirety of it and make sure everything is is working the whole stack all the way up being async of weight. Yeah. The actual use case that got me into it was project I'm on had a kinda squirrely situation with cancellation and realized I had some a lot to learn about how to properly cancel async and await tasks.
And so I picked up that book, and it did not disappoint. Cool. Nice. Alright. So, Eric, if if people have questions and they wanna reach out and get in touch with you, what's the best way?
Probably the easiest way to find me online is on Twitter. My handle is at potter eric. All the Harry Potter fans ate up all the the good, Potter handles right away on Twitter. So I'm at potter eric, not epotter or anything like that. My blog is humbletoolsmith.com, and I've got some content up there both on c sharp interactive and on the dot net notebooks.
And if you want, you can find me on LinkedIn. I hang out on there sometime soon. Thanks, Eric. Great show. If our listeners wanna reach out and touch to us, we'd love to hear your feedback.
Let us know what we can do better. They can reach me at Twitter. I am at dotnetsuperhero. Alright? And Caleb, who's not here, he's at Caleb Wells codes.
Thanks, Eric. Great show. Mhmm. Glad to have you. Yeah.
Thanks so much for having me on. This has been a fun conversation. No. Thanks for coming on. Great.
Alright. We'll catch everybody on the next episode of adventures in dot net.
Interactive C# with VS Code Notebooks with Eric Potter - NET 207
0:00
Playback Speed: