<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: David Pine 🤓</title>
    <description>The latest articles on DEV Community by David Pine 🤓 (@ievangelist).</description>
    <link>https://dev.to/ievangelist</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F30991%2F0980dc28-1591-4d6d-9791-f894b644ec91.png</url>
      <title>DEV Community: David Pine 🤓</title>
      <link>https://dev.to/ievangelist</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ievangelist"/>
    <language>en</language>
    <item>
      <title>Why build Single Page Apps in Blazor</title>
      <dc:creator>David Pine 🤓</dc:creator>
      <pubDate>Wed, 16 Jun 2021 14:14:16 +0000</pubDate>
      <link>https://dev.to/dotnet/why-build-single-page-apps-in-blazor-103m</link>
      <guid>https://dev.to/dotnet/why-build-single-page-apps-in-blazor-103m</guid>
      <description>&lt;p&gt;📚 In this post, we'll address some common Blazor questions. Specifically, the "what?", but more importantly the "why?". Why should I care about Blazor when we've already got Angular, React, Vue, or some other JavaScript framework? Why choose Blazor, and what is WebAssembly all about?  We'll cover the history of Microsoft's web application development frameworks and what we see for its bright future 🔮.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔥 What is Blazor?
&lt;/h2&gt;

&lt;p&gt;There are several common definitions for Blazor, the first of which is rather straightforward:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Blazor is a &lt;em&gt;framework&lt;/em&gt; for building interactive client-side web UI with .NET."&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://docs.microsoft.com/aspnet/core/blazor?wt.mc_id=dapine" rel="noopener noreferrer"&gt;Microsoft docs: Blazor&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As the official docs state, it's a "framework" first — and it's used to build client-side web UI. But how is that different from any other client-side framework for building web UI, and what makes it so special? I'm hopeful that you're asking yourself, "does .NET make a difference?".&lt;/p&gt;

&lt;p&gt;Here's another definition:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Blazor is a &lt;em&gt;free&lt;/em&gt; and &lt;em&gt;open-source&lt;/em&gt; web framework that enables developers to create web apps using C# and HTML."&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://wikipedia.org/wiki/Blazor" rel="noopener noreferrer"&gt;Wikipedia: Blazor&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Oh, it's free — that's nice. But to be fair, there are plenty of other &lt;em&gt;free&lt;/em&gt; frameworks for building client-side web UI. Why should I care about Blazor?&lt;/p&gt;

&lt;h2&gt;
  
  
  ⁉ Why Blazor?
&lt;/h2&gt;

&lt;p&gt;Historically, all of the prior web UI frameworks from Microsoft were based on an entirely different architecture and were rendered on the server-side. Blazor set out to bring C# development to the web client, and this was only going to be possible with the advent of WebAssembly.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications."&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://webassembly.org" rel="noopener noreferrer"&gt;webassembly.org&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🤓 Wow, that sounds like a mouthful! Let's break that down a bit:&lt;/p&gt;

&lt;p&gt;A "binary instruction format" in this case means that it's byte code, taking your abstract syntax tree (AST) from your non-JavaScript programming language and converting it to binary.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frz8f8jgf8a1kzes24hza.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frz8f8jgf8a1kzes24hza.png" alt="AST to binary"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wasm sits atop a "stack-based virtual machine" — this identifies the core functionality which is "push" ⬇ and "pop" ⬆ based. Instructions are pushed, and evaluations are popped. While this is an oversimplification, the concepts remain and the implementation details are less important. There are limitations with being single-threaded, applied memory constraints, and so on, but concerns are deemphasized as Blazor manages the interop to Wasm.&lt;/p&gt;

&lt;p&gt;It's very important to call attention to the fact that Wasm is a "portable compilation target" 🎯. This means it's possible to take C, C++, Rust, C#, and other non-traditional web programming languages and target Wasm for their compilation. This results in Wasm binaries, which are web-ready based on open standards but from programming languages other than JavaScript.&lt;/p&gt;

&lt;p&gt;To be clear, there is JavaScript interop and there are even different hosting models for Blazor — server-side or client-side with Wasm. More on that later...&lt;/p&gt;

&lt;h3&gt;
  
  
  😵 What about JavaScript?
&lt;/h3&gt;

&lt;p&gt;Is Wasm the death 💀 of JavaScript, what does this mean? The answer is no. JavaScript isn't going anywhere — and Wasm should be considered complementary to JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff2yvrkicmlwi5kye6nec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff2yvrkicmlwi5kye6nec.png" alt="WebAssembly and JavaScript"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It is expected that JavaScript and WebAssembly will be used together in a number of configurations"&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://webassembly.org/docs/faq" rel="noopener noreferrer"&gt;webassembly.org: FAQ&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  🆕 The analogy
&lt;/h4&gt;

&lt;p&gt;Thanks to Wasm, the web browser has a few of its perceived limitations lifted, and this is why I believe:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"With WebAssembly, web browsers are more like app stores — where the end-user experience is more near-native performance."&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://davidpine.net" rel="noopener noreferrer"&gt;David Pine&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are seemingly countless &lt;a href="https://webassembly.org/docs/use-cases" rel="noopener noreferrer"&gt;new use cases&lt;/a&gt; specific to Wasm that were not realistically achievable with JavaScript alone. It's easy to imagine applications being delivered over the web to your browser, powered by Wasm for more elaborate and resource-intensive use cases. This is why I believe it's a paradigm shift in what's possible with the web application platform.&lt;/p&gt;

&lt;h3&gt;
  
  
  🗺 Adoption
&lt;/h3&gt;

&lt;p&gt;Wasm is supported in all major browsers, and covers nearly 93% of all users — &lt;a href="https://caniuse.com/?search=webassembly" rel="noopener noreferrer"&gt;Can I use "WebAssembly"&lt;/a&gt;. This isn't the same plugin-based approach that Silverlight relied on. It's the future of the web, and you'll continue to see developers building applications using this technology.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔒 Safe and secure
&lt;/h3&gt;

&lt;p&gt;Wasm is every bit as secure as JavaScript.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"WebAssembly describes a memory-safe, sandboxed execution environment that may even be implemented inside existing JavaScript virtual machines. When embedded in the web, WebAssembly will enforce the same-origin and permissions security policies of the browser."&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://webassembly.org" rel="noopener noreferrer"&gt;webassembly.org&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In other words, Wasm is confined to play within the same security sandbox as JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4cvseotj7t53i0kuhxsb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4cvseotj7t53i0kuhxsb.png" alt="JavaScript security sandbox"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ✨ Web application platform
&lt;/h3&gt;

&lt;p&gt;With modern web application development, you want your apps to be responsive on both desktop and mobile browsers. Modern web apps are much more sophisticated and rich in content than their predecessors, with feature expectations of real-time web functionality, progressive web app (PWA) capabilities, and beautifully orchestrated user interactions. For the first time, .NET developers can use their existing C# skills to build all sorts of apps on the web. In my opinion, this helps blur the lines between backend and frontend developers — but more broadly expands app development through the web. I believe the philosophy of using the same programming language on the client and server leads to more rapid adoption, and Node.js comes to mind specifically.&lt;/p&gt;

&lt;h3&gt;
  
  
  ➕ Familiarity
&lt;/h3&gt;

&lt;p&gt;It's easy to press upon the fact you can use your existing C# skills, but it's often an oversight &lt;em&gt;not&lt;/em&gt; to call attention to the fact that there is still HTML, CSS, and JavaScript. In this way, you can keep using your HTML and CSS skills, your favorite CSS libraries, and you're free to work smoothly with existing JavaScript packages. After all, you're still building web apps!&lt;/p&gt;

&lt;h3&gt;
  
  
  🕓 Brief history
&lt;/h3&gt;

&lt;p&gt;In the early days - back in 1996, &lt;a href="https://wikipedia.org/wiki/Active_Server_Pages" rel="noopener noreferrer"&gt;Active Server Pages (ASP)&lt;/a&gt; offered the first server-side scripting language and engine for dynamic web pages from Microsoft. As .NET Framework evolved, ASP.NET was born, and with it — Web Forms emerged. Web Forms was (and still is) used by many that enjoy what .NET is capable of, and it allowed for server-side rendering of HTML.&lt;/p&gt;

&lt;p&gt;Sometime later, ASP.NET Model View Controller (MVC) was introduced and it made Web Forms look sluggish. MVC brought ASP.NET developers closer to the metal. Suddenly, they had to understand the 3 pillars of the web; HTML, CSS, and JavaScript. In MVC, there was simply a closer alignment to web standards. MVC also added a different programming model, which was based on controllers and views. This helped to address some resistance from the developer community, where developers took notice that their development interactions with Web Forms weren't stateless — an illusion from the framework which contradicted the nature of HTTP.&lt;/p&gt;

&lt;p&gt;ASP.NET Web API grew in popularity, and developers embraced the power of .NET. Web API started being accepted as the standard for building .NET-based HTTP services.&lt;/p&gt;

&lt;p&gt;Eventually, leveraging the Razor view engine from MVC — Razor Pages took to the stage. Innovations from ASP.NET Core made a lot of this possible.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"ASP.NET Core is a cross-platform, high-performance, open-source framework for building modern, cloud-enabled, Internet-connected apps."&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://docs.microsoft.com/aspnet/core/introduction-to-aspnet-core?wt.mc_id=dapine" rel="noopener noreferrer"&gt;Microsoft docs: Introduction to ASP.NET Core&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ASP.NET Core offers first-class citizenship to all of the fundamentals you'd expect in modern development such as (but not limited to), dependency injection, strongly-typed configurations, logging, globalization and localization, authentication, and hosting.&lt;/p&gt;

&lt;p&gt;Razor Pages converged controllers and views into being a bit more logically cohesive, leaning more towards true components, and building on Web API infrastructure.&lt;/p&gt;

&lt;p&gt;After Razor Pages came Blazor. The name "Blazor" is a play on words, combining &lt;strong&gt;B&lt;/strong&gt;rowser and &lt;strong&gt;R&lt;/strong&gt;azor, because as developers' were good at naming things — am I right? 🤣 That's where we are today, in a world with Blazor and all of its capabilities. The first of its kind for .NET, a single-page application framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  Single-Page Application (SPA)
&lt;/h3&gt;

&lt;p&gt;Blazor is the only .NET-based SPA framework from Microsoft. There are many popular SPA frameworks including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://angular.io/" rel="noopener noreferrer"&gt;Angular&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjs.org/" rel="noopener noreferrer"&gt;React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vuejs.org/" rel="noopener noreferrer"&gt;Vue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://svelte.dev/" rel="noopener noreferrer"&gt;Svelte&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The primary differentiator is that these are &lt;em&gt;all&lt;/em&gt; based on JavaScript, not Wasm.&lt;/p&gt;

&lt;p&gt;Sometimes developers building applications with Blazor confuse the differences in the two hosting models. There are misconceptions that  Blazor Server (server-side) is not a SPA. The server-side nature feels more like the previous non-SPA .NET web app frameworks. But let's look to the definition of a SPA:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"A single-page application (SPA) is a web application or website that interacts with the user by dynamically rewriting the current web page with new data from the web server, instead of the default method of a web browser loading entire new pages"&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://wikipedia.org/wiki/Single-page_application" rel="noopener noreferrer"&gt;Wikipedia: Single-page applications&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Regardless of the hosting model, Blazor satisfies this definition. With Blazor Server, the server exposes a &lt;a href="https://docs.microsoft.com/aspnet/core/tutorials/signalr?wt.mc_id=dapine" rel="noopener noreferrer"&gt;SignalR&lt;/a&gt; hub with a specific &lt;em&gt;Blazor&lt;/em&gt; protocol which is responsible for communicating updates to the document object model (DOM) in the client app in real-time. When there are differences (or deltas) in the DOM, the changes are reflected immediately.&lt;/p&gt;

&lt;p&gt;In Blazor WebAssembly, when the client requests the app it is served up as a bit of HTML, CSS, and JavaScript — like all other web apps. The &lt;em&gt;blazor.webassembly.js&lt;/em&gt; file bootstraps the app and starts loading .NET binaries which can be viewed coming over the wire in the browser's &lt;strong&gt;Network&lt;/strong&gt; tab.&lt;/p&gt;

&lt;h3&gt;
  
  
  💜 Open source
&lt;/h3&gt;

&lt;p&gt;It's developed in the open, as part of the ASP.NET Core GitHub repository.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dotnet" rel="noopener noreferrer"&gt;
        dotnet
      &lt;/a&gt; / &lt;a href="https://github.com/dotnet/aspnetcore" rel="noopener noreferrer"&gt;
        aspnetcore
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;I'm a huge proponent of open-source software development. To me, being able to openly see how a feature is architected, designed, and implemented is a game-changer. The ability to post issues, propose features, collaborate with the dev team and others, and create pull requests makes the software community-centric. This ultimately makes for a better product, without question!&lt;/p&gt;

&lt;h3&gt;
  
  
  ♻ Code reuse
&lt;/h3&gt;

&lt;p&gt;SPA developers have been fighting a losing battle for years, where web API endpoints define a payload in a certain shape — and the developer has to understand the shape of each endpoint, ideally mapping to a model on the client. This is a very tedious process and is error-prone. Blazor can alleviate that concern by sharing models from .NET Web APIs, with the Blazor client app.&lt;/p&gt;

&lt;p&gt;💡 Entire .NET libraries can be shared, and consumed in both server-side and client-side scenarios. Making use of existing logic, functionality, and capabilities allows for developers to focus on innovating more as they're not required to re-invent the wheel.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛠 Tooling
&lt;/h3&gt;

&lt;p&gt;Productivity of the development team is always a major concern for application development of all kinds. The developer tools that exist are key to success, if your team fumbles about or struggles to get common programming tasks done — the entire project can fail. With Blazor development, you can use proven developer tooling such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://visualstudio.microsoft.com/vs/?wt.mc_id=dapine" rel="noopener noreferrer"&gt;Visual Studio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://visualstudio.microsoft.com/vs/mac/?wt.mc_id=dapine" rel="noopener noreferrer"&gt;Visual Studio for Mac&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://code.visualstudio.com/?wt.mc_id=dapine" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally, the &lt;a href="https://docs.microsoft.com/dotnet/core/tools/?wt.mc_id=dapine" rel="noopener noreferrer"&gt;.NET CLI&lt;/a&gt; comes to mind and has become a productivity powerhouse, with &lt;code&gt;new&lt;/code&gt; (templating), &lt;code&gt;build&lt;/code&gt;, &lt;code&gt;restore&lt;/code&gt;, &lt;code&gt;publish&lt;/code&gt;, &lt;code&gt;run&lt;/code&gt;, &lt;code&gt;test&lt;/code&gt;, &lt;code&gt;pack&lt;/code&gt;, and &lt;code&gt;migrate&lt;/code&gt; commands (to name a few) — you're likely to find success.&lt;/p&gt;

&lt;p&gt;✔ All of this built with the most powerful and modern programming language in the world today, of course, my opinion on that matter being C#.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌐 .NET APIs
&lt;/h3&gt;

&lt;p&gt;As a developer with more than a decade of real-world web application development experience, I can safely say that I have reliably used .NET for enterprise development of production applications time and time again. The API surface area of .NET alone is massive, and as an ecosystem with third-party packages from NuGet what's not to love?&lt;/p&gt;

&lt;h4&gt;
  
  
  ❔ Why does that matter?
&lt;/h4&gt;

&lt;p&gt;I recently witnessed a .NET API being developed, from its inception to fruition — and the process I observed is very mature and well established.&lt;/p&gt;

&lt;p&gt;Keep in mind this happens entirely in the open, for the public to see. It started with early discussions and then an idea emerged, this led to an official proposal in the form of a GitHub issue. The issue captured everything you'd expect for the proposal, the problem statement, use cases, example syntax, suggested API surface area, example usage, and even links to the comments from the original discussion and idea.&lt;/p&gt;

&lt;p&gt;The proposal was discussed and hashed out, there was much bargaining, reasoning, and negotiation. Then came a draft which was finalized from a group of people who participated in the public API design review meeting. The official .NET API design review meeting follows a &lt;a href="https://apireview.net/schedule" rel="noopener noreferrer"&gt;weekly schedule&lt;/a&gt;. As part of the review, notes are captured, GitHub labels applied, and a stamp of approval is given — and with that, the .NET API in question is codified as a snippet.&lt;/p&gt;

&lt;p&gt;From there, the issue serves as a point of reference for pull requests that aim to satisfy the proposal. A developer takes the issue, implements the API, writes unit tests, and creates a pull request (PR). The PR undergoes review, and when it's merged the API has to be documented, communicated, breaking-changes captured/reported, promoted, shared, analyzed, and so on.&lt;/p&gt;

&lt;p&gt;All of this, for a single .NET API and there are tens of thousands of .NET APIs 😲. You're in good hands, with the strength of all the .NET contributors holding you up. For more information, see the &lt;a href="https://github.com/dotnet/runtime/blob/main/docs/project/api-review-process.md" rel="noopener noreferrer"&gt;official API review process&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I asked a friend of mine who holds the .NET API near and dear to his heart for a few choice words on the subject:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The .NET platform prides itself on having a great set of APIs that are very usable and make you extremely productive no matter what kind of application you're building. With Wasm, this power is now also available when you build browser-based applications using Blazor WebAssembly."&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://twitter.com/terrajobst" rel="noopener noreferrer"&gt;Immo Landwerth&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  🆘 Support
&lt;/h3&gt;

&lt;p&gt;With all .NET products, there are various support policies in place. Understanding the lifecycles of releases, and their corresponding support policy is often a crucial consideration for development teams. For the most part, it's recommended to build production-ready applications targeting a &lt;em&gt;Long Term Support (LTS)&lt;/em&gt; release of .NET. However, some companies and development teams choose to track &lt;em&gt;Current&lt;/em&gt; (or even &lt;em&gt;Preview&lt;/em&gt;) releases — they tend to migrate more aggressively. For more information, see the official .NET site for support details:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dotnet.microsoft.com/platform/support/policy?wt.mc_id=dapine" rel="noopener noreferrer"&gt;.NET Support Policy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dotnet.microsoft.com/platform/support/policy/dotnet-core?wt.mc_id=dapine" rel="noopener noreferrer"&gt;What's covered&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🤝 Developer community
&lt;/h3&gt;

&lt;p&gt;I asked a few Blazor developer community friends for their thoughts, and offered to share them as a quote when asked "Why Blazor?":&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Blazor's component model makes building apps a joy. It's simple to get going but offers lots of customization when you need it.&lt;/p&gt;

&lt;p&gt;— Chris Sainty &lt;a class="mentioned-user" href="https://dev.to/chrissainty"&gt;@chrissainty&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I agree with Chris. There's much joy in developing apps that are simple and customizable.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;.NET productivity. I can use my existing skills, workflow, tools, and previously written libraries. There's no &lt;code&gt;npm&lt;/code&gt; or &lt;code&gt;webpack&lt;/code&gt;, instead, I have the .NET stack and its ecosystem, which makes me super productive.&lt;/p&gt;

&lt;p&gt;— Ed Charbeneau &lt;a class="mentioned-user" href="https://dev.to/edcharbeneau"&gt;@edcharbeneau&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I couldn't agree more with Ed. Productivity is a critical driving factor — and not having to write a lot of JavaScript certainly eases the pain of web development 😬.&lt;/p&gt;

&lt;p&gt;The Blazor developer community is thriving:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/AdrienTorris/awesome-blazor" rel="noopener noreferrer"&gt;Awesome Blazor: A collection of Blazor resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AdrienTorris/awesome-blazor" rel="noopener noreferrer"&gt;Awesome Blazor Browser: Search Awesome Blazor resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blazorday.net" rel="noopener noreferrer"&gt;Blazor Day: 2021&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🎉 Promising future
&lt;/h3&gt;

&lt;p&gt;In addition to the amazing Blazor developer community, developer tooling, open-source ecosystem, and strong opinions from respected industry leaders, there's also an entire UI component movement from the leading component vendors whom of which are actively building out Blazor components (in alphabetical order):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.devexpress.com/blazor" rel="noopener noreferrer"&gt;DevExpress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.grapecity.com/componentone/blazor-ui-controls" rel="noopener noreferrer"&gt;GrapeCity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.infragistics.com/products/ignite-ui-blazor" rel="noopener noreferrer"&gt;Infragistics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blazor.radzen.com" rel="noopener noreferrer"&gt;Radzen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.htmlelements.com/blazor" rel="noopener noreferrer"&gt;Smart HTML Elements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.syncfusion.com/blazor-components" rel="noopener noreferrer"&gt;Syncfusion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/blazor-ui" rel="noopener noreferrer"&gt;Telerik&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ✔ Customer stories
&lt;/h3&gt;

&lt;p&gt;Whenever Microsoft has customers who are excited to share their stories, they speak for themselves — here are two Blazor success stories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://customers.microsoft.com/en-us/story/816181-ge-aviation-manufacturing-azure" rel="noopener noreferrer"&gt;GE Aviation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://customers.microsoft.com/en-us/story/1338933582129668706-the-postage-professional-services-azure" rel="noopener noreferrer"&gt;The Postage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  👀 Code
&lt;/h3&gt;

&lt;p&gt;To quickly create a Blazor WebAssembly project, use the &lt;a href="https://docs.microsoft.com/dotnet/core/tools/dotnet-new-sdk-templates#blazorwasm?wt.mc_id=dapine" rel="noopener noreferrer"&gt;&lt;code&gt;dotnet new blazorwasm&lt;/code&gt; .NET CLI command&lt;/a&gt;.&lt;/p&gt;


&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;


&lt;p&gt;In the preceding command, we specified the name (&lt;code&gt;-n&lt;/code&gt;) of the project, and that we didn't want a restore. If you're to open the &lt;em&gt;Pages/Counter.razor&lt;/em&gt; file, you'll see some Razor code similar to the following:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;

@page "/counter"

&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Counter&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Current count: @_currentCount&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn btn-primary"&lt;/span&gt;
        &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="s"&gt;"IncrementCount"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
     Click me
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;

@code {
    private int _currentCount = 0;

    private void IncrementCount() =&amp;gt;
        ++ _currentCount;
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;This is a simple counter page. It is considered a &lt;em&gt;page&lt;/em&gt; rather than a &lt;em&gt;component&lt;/em&gt; due to its &lt;code&gt;@page&lt;/code&gt; directive, which specifies the page route of &lt;code&gt;"/counter"&lt;/code&gt;. Since this is based on the Razor view engine, it serves as a template — where you can reference C# code variables in the HTML. This also demonstrates the use of the &lt;code&gt;@code { ... }&lt;/code&gt; directive, which lets you embed C# functionality directly within the template file. The &lt;code&gt;_currentCount&lt;/code&gt; variable is &lt;code&gt;private&lt;/code&gt; and scoped to the page, and incremented from the &lt;code&gt;IncrementCount&lt;/code&gt; method. This method is called from on the clicking of the button and is bound via the &lt;code&gt;@onclick&lt;/code&gt; event. As the &lt;code&gt;_currentCount&lt;/code&gt; value increments, the changes are reflected immediately where they're bound. In this case, they are displayed within a &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; element as the "Current count".&lt;/p&gt;

&lt;p&gt;The counter page is just a small example of what's possible, and there are plenty of amazing opportunities for you as a web developer. I'm hopeful that you'll consider .NET for your next web app development project.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔚 Summary
&lt;/h2&gt;

&lt;p&gt;There are many tools for you as a developer to choose from. With all developer decisions, when deciding whether or not to use a framework should be a &lt;em&gt;team decision&lt;/em&gt;. Blazor is another tool and does not apply to all use cases — knowing &lt;em&gt;when&lt;/em&gt; to use it is just as important as knowing &lt;em&gt;how&lt;/em&gt; to. In this post, we discussed the "what" and the "why". The "how" already has plenty of coverage.&lt;/p&gt;

&lt;p&gt;Please consider the additional resources:&lt;/p&gt;

&lt;p&gt;🤓 I'm an O'Reilly Media author for my book, &lt;a href="https://a.co/d/7DJieDY" rel="noopener noreferrer"&gt;📖 Learning Blazor: Build Single-Page Apps with WebAssembly and C#&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/learn/modules/build-blazor-webassembly-visual-studio-code/?WT.mc_id=dapine" rel="noopener noreferrer"&gt;Build a web app with Blazor on Microsoft Learn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/aspnet/core/blazor?wt.mc_id=dapine" rel="noopener noreferrer"&gt;Introduction to ASP.NET Core Blazor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/aspnet/core/blazor/hosting-models?wt.mc_id=dapine" rel="noopener noreferrer"&gt;Blazor hosting models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/aspnet/core/blazor/javascript-interoperability?wt.mc_id=dapine" rel="noopener noreferrer"&gt;Blazor JavaScript interop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/aspnet/core/blazor/webassembly-performance-best-practices?wt.mc_id=dapine" rel="noopener noreferrer"&gt;Blazor WebAssembly performance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>webdev</category>
      <category>aspnet</category>
    </item>
    <item>
      <title>The .NET Docs Show: Data &amp; .NET</title>
      <dc:creator>David Pine 🤓</dc:creator>
      <pubDate>Mon, 05 Oct 2020 18:10:24 +0000</pubDate>
      <link>https://dev.to/dotnet/the-net-docs-show-data-net-1n42</link>
      <guid>https://dev.to/dotnet/the-net-docs-show-data-net-1n42</guid>
      <description>&lt;p&gt;In this episode of &lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;, Julie Lerman (&lt;a href="https://twitter.com/julielerman"&gt;@julielerman&lt;/a&gt;, &lt;a href="https://mvp.microsoft.com/en-us/PublicProfile/8987"&gt;Microsoft MVP&lt;/a&gt;) discusses Entity Framework (EF). Entity Framework is an object-relational mapper (O/RM) from Microsoft. As part of this week's #CheckUp, we shared a Microsoft Learn module - &lt;a href="https://aka.ms/learn-ef-core"&gt;Persist and retrieve relational data with Entity Framework Core&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The #HallwayTrack was amazingly entertaining this week, and we learned firsthand about "the Julie effect"! We couldn't stop laughing when talking about "gifs", clearly &lt;a href="https://www.merriam-webster.com/dictionary/GIF?pronunciation&amp;amp;lang=en_us&amp;amp;dir=g&amp;amp;file=gif0001v"&gt;pronounced 'gif&lt;/a&gt;, we searched Giphy.com live on the show, yeah - it's a must watch 👀. We shared that even experts Google things, and that's ok. Julie answered many questions from our very engaged audience - for that, I'm grateful 🙏🏽.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/4wCPzfd2wIY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you liked this video and would like to see some more of our .NET content, please subscribe to our &lt;a href="https://aka.ms/dotnetdocsshow-youtube-playlist"&gt;The .NET Docs Show YouTube Playlist&lt;/a&gt; and &lt;a href="https://twitter.com/dotnetdocsshow"&gt;follow us on Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  #CheckUp
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aka.ms/learn-ef-core"&gt;MS Learn: Persist and retrieve relational data with Entity Framework Core&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Useful links
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://app.pluralsight.com/profile/author/julie-lerman"&gt;Pluralsight author profile: Julie Lerman&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.manning.com/books/entity-framework-core-in-action"&gt;Entity Framework Core in Action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>database</category>
      <category>dotnetdocsshow</category>
    </item>
    <item>
      <title>The .NET Docs Show: Azure and all things mobile 📱</title>
      <dc:creator>David Pine 🤓</dc:creator>
      <pubDate>Mon, 21 Sep 2020 17:59:08 +0000</pubDate>
      <link>https://dev.to/dotnet/the-net-docs-show-azure-and-all-things-mobile-39ol</link>
      <guid>https://dev.to/dotnet/the-net-docs-show-azure-and-all-things-mobile-39ol</guid>
      <description>&lt;p&gt;In this episode of &lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;, Matt Soucoup (&lt;a href="https://twitter.com/codemillmatt"&gt;@codemillmatt&lt;/a&gt;) demonstrates Xamarin.Forms / Xamarin.Essentials and how easy it is to transition your .NET skills to mobile development. As part of this week's #CheckUp, we shared a Microsoft Learn module - &lt;a href="https://aka.ms/learn-xamarin-forms"&gt;Create a mobile app with Xamarin.Forms&lt;/a&gt;. Additionally, we learned that a lot of the Xamarin University content that sat behind a paywall has since been ported over to a &lt;a href="https://docs.microsoft.com/en-us/learn/paths/build-mobile-apps-with-xamarin-forms"&gt;Microsoft learning path&lt;/a&gt; and is entirely free 🤑! &lt;/p&gt;

&lt;p&gt;The #HallwayTrack was amazing! We learned a bit about Matt's career, and how he started with Mono Develop. After talking about Objective-C, Matt recounts:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Apple decided that developers were using too many square brackets, so they went to Swift 🤣&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Matt details how it was a tooling solution to lift his C# skills and apply them to mobile. Matt showed off live reload, where the iOS simulator would immediately refresh the application with XAML changes - this greatly tightens the feedback loop...thus making the developer more productive. We discussed Android and iOS, as well as MAUI - Matt shared his perspective on Android.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Everything about Android is weird! 😵&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/pzZHJ60uqsw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you liked this video and would like to see some more of our .NET content, please subscribe to our &lt;a href="https://www.youtube.com/channel/UCvtT19MZW8dq5Wwfu6B0oxw"&gt;The .NET Docs Show YouTube Channel&lt;/a&gt; and &lt;a href="https://twitter.com/dotnetdocsshow"&gt;follow us on Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  #CheckUp
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aka.ms/learn-xamarin-forms"&gt;MS Learn: Create a mobile app with Xamarin.Forms&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Useful links
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.theurlist.com/the-dot-net-docs-show-matt-soucoup-mobile"&gt;Matt's URL list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>xamarin</category>
      <category>mobile</category>
      <category>dotnetdocsshow</category>
    </item>
    <item>
      <title>The .NET Docs Show: Managing the dot.net website</title>
      <dc:creator>David Pine 🤓</dc:creator>
      <pubDate>Mon, 14 Sep 2020 17:54:08 +0000</pubDate>
      <link>https://dev.to/dotnet/the-net-docs-show-managing-the-dot-net-website-3jm8</link>
      <guid>https://dev.to/dotnet/the-net-docs-show-managing-the-dot-net-website-3jm8</guid>
      <description>&lt;p&gt;In this episode of &lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;, Maíra Wenzel (&lt;a href="https://twitter.com/mairacw"&gt;@mairacw&lt;/a&gt;) joins the hosts in a #LiveShare to migrate the dot.net website to &lt;code&gt;enable&lt;/code&gt; nullable context, and to fix actual bugs. As part of this week's #CheckUp, we shared a tutorial on the subject - &lt;a href="https://aka.ms/nullable-references"&gt;migrate existing code with nullable reference types&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The #HallwayTrack with Maíra was awesome! We compared performance of .NET Core 3.1 to .NET 5 with the dot.net website, that sees over 13 million page views per month. Maíra demonstrated improvements for monitoring and auditing accessibility, as well as what tech stack is used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Migrated from ASP.NET Core MVC to ASP.NET Core Razor Pages&lt;/li&gt;
&lt;li&gt;Adding in ASP.NET Core Blazor&lt;/li&gt;
&lt;li&gt;Sprinkled with React&lt;/li&gt;
&lt;li&gt;Azure App Services&lt;/li&gt;
&lt;li&gt;Azure App Insights&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/nFROvRwDCmk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you liked this video and would like to see some more of our .NET content, please subscribe to our &lt;a href="https://www.youtube.com/channel/UCvtT19MZW8dq5Wwfu6B0oxw"&gt;The .NET Docs Show YouTube Channel&lt;/a&gt; and &lt;a href="https://twitter.com/dotnetdocsshow"&gt;follow us on Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  #CheckUp
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aka.ms/nullable-references"&gt;Tutorial: Migrate existing code with nullable reference types&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Useful links
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.theurlist.com/the-dot-net-docs-show-maira-wenzel-dotnet"&gt;Maíra's URL list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>aspnet</category>
      <category>webdev</category>
      <category>dotnetdocsshow</category>
    </item>
    <item>
      <title>The .NET Docs Show: Hacking DateTime bugs 🦟 in PROD</title>
      <dc:creator>David Pine 🤓</dc:creator>
      <pubDate>Tue, 08 Sep 2020 12:01:35 +0000</pubDate>
      <link>https://dev.to/dotnet/the-net-docs-show-hacking-datetime-bugs-in-prod-4i6i</link>
      <guid>https://dev.to/dotnet/the-net-docs-show-hacking-datetime-bugs-in-prod-4i6i</guid>
      <description>&lt;p&gt;In this episode of &lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;, Jon Skeet (&lt;a href="https://twitter.com/jonskeet"&gt;@jonskeet&lt;/a&gt;) rips apart the shows source code in a #LiveShare session with me. As part of this week's #CheckUp, we shared Visual Studio IntelliSense updates for &lt;a href="https://aka.ms/csharp-string-interpolation"&gt;C# string interpolation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The #HallwayTrack with Jon was amazing and we covered a lot of ground. We discussed why &lt;code&gt;DateTime&lt;/code&gt; structures are difficult to work with, despite being so easy to use - an interesting quagmire 😕. We talked about leap years, months, and even seconds (which I didn't realize was a thing). We highlighted a few bits of &lt;code&gt;NodaTime&lt;/code&gt; and Jon was set loose in our source code...which is of course &lt;em&gt;very&lt;/em&gt; entertaining. Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/3i8zDtpw-kQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you liked this video and would like to see some more of our .NET content, please subscribe to our &lt;a href="https://www.youtube.com/channel/UCvtT19MZW8dq5Wwfu6B0oxw"&gt;The .NET Docs Show YouTube Channel&lt;/a&gt; and &lt;a href="https://twitter.com/dotnetdocsshow"&gt;follow us on Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  #CheckUp
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aka.ms/csharp-string-interpolation"&gt;$ - string interpolation (C# reference)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Useful links
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.theurlist.com/the-dot-net-docs-show-datetime-jon-skeet"&gt;Jon's URL list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>aspnet</category>
      <category>webdev</category>
      <category>dotnetdocsshow</category>
    </item>
    <item>
      <title>The .NET Docs Show: Exploring ASP.NET Core + VueJS</title>
      <dc:creator>David Pine 🤓</dc:creator>
      <pubDate>Mon, 31 Aug 2020 18:13:31 +0000</pubDate>
      <link>https://dev.to/dotnet/the-net-docs-show-exploring-asp-net-core-vuejs-5b0a</link>
      <guid>https://dev.to/dotnet/the-net-docs-show-exploring-asp-net-core-vuejs-5b0a</guid>
      <description>&lt;p&gt;In this episode of &lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;, Matt Millican (&lt;a href="https://twitter.com/millicanmatt"&gt;@millicanmatt&lt;/a&gt;) discusses the integration of ASP.NET Core and &lt;a href="https://vuejs.org"&gt;Vue.js&lt;/a&gt;. As part of this week's #CheckUp, we shared creating custom templates &lt;a href="https://aka.ms/dotnet-custom-templates"&gt;with the .NET CLI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The #HallwayTrack Matt shares several ways to consume Vue.js and some of his Visual Studio Code extensions for .NET and Vue.js. We worked through how to sprinkle in JavaScript into applications, to enable dynamic updates. We talked about how TypeScript can improve the JavaScript development experience and as it relates to single page applications - the chat was alive with battling opinions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Angular&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Vue.js&lt;/li&gt;
&lt;li&gt;Aurelia&lt;/li&gt;
&lt;li&gt;Svelte&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/1nC0YXuu_yI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you liked this video and would like to see some more of our .NET content, please subscribe to our &lt;a href="https://aka.ms/dotnet-custom-templates"&gt;The .NET Docs Show YouTube Channel&lt;/a&gt; and &lt;a href="https://twitter.com/dotnetdocsshow"&gt;follow us on Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  #CheckUp
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aka.ms/dotnet-custom-templates"&gt;Create custom .NET CLI project templates&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Useful links
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.theurlist.com/the-dot-net-docs-show-vuejs-matt-millican"&gt;Matt's URL list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>aspnet</category>
      <category>webdev</category>
      <category>dotnetdocsshow</category>
    </item>
    <item>
      <title>The .NET Docs Show: Open source .NET projects 👨🏻‍🦲</title>
      <dc:creator>David Pine 🤓</dc:creator>
      <pubDate>Mon, 24 Aug 2020 17:55:28 +0000</pubDate>
      <link>https://dev.to/dotnet/the-net-docs-show-open-source-net-projects-2h39</link>
      <guid>https://dev.to/dotnet/the-net-docs-show-open-source-net-projects-2h39</guid>
      <description>&lt;p&gt;In this episode of &lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;, Isaac Levin (&lt;a href="https://twitter.com/isaacrlevin"&gt;@isaacrlevin&lt;/a&gt;) discusses several of his open source .NET projects. As part of this week's #CheckUp, we share an MS Learn module for building &lt;a href="https://aka.ms/aspnet-graph"&gt;with Microsoft Graph&lt;/a&gt; as it related to the PresenceLight project.&lt;/p&gt;

&lt;p&gt;The #HallwayTrack was engaging and filled with demonstrations including &lt;a href="https://github.com/isaacrlevin/PresenceLight"&gt;PresenceLight&lt;/a&gt;, &lt;a href="https://github.com/isaacrlevin/GitHubStatTracker"&gt;GitHub stat tracker&lt;/a&gt;, and &lt;a href="https://github.com/isaacrlevin/CraigslistSearch"&gt;Craigslist search&lt;/a&gt;. We covered static websites, Azure Functions, Blazor WebAssembly (WASM), single file publishing, and much more!&lt;/p&gt;

&lt;h2&gt;
  
  
  Quote
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;There are definitely a lot of echo chambers in open source.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/12XAjpuwByo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you liked this video and would like to see some more of our .NET content, please subscribe to our &lt;a href="https://www.youtube.com/channel/UCIy_nKrwrd-naf_MPWtXdLA"&gt;The .NET Docs Show YouTube Channel&lt;/a&gt; and &lt;a href="https://twitter.com/dotnetdocsshow"&gt;follow us on Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  #CheckUp
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aka.ms/aspnet-graph?WT.mc_id=devto-thedotnetdocs-dapine"&gt;Build ASP.NET MVC web app with Microsoft Graph&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Useful links
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.theurlist.com/presencelight"&gt;Isaac's URL list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>opensource</category>
      <category>dotnetdocsshow</category>
    </item>
    <item>
      <title>The .NET Docs Show: Informal Discussion on Formal Education 📜</title>
      <dc:creator>David Pine 🤓</dc:creator>
      <pubDate>Thu, 20 Aug 2020 20:14:56 +0000</pubDate>
      <link>https://dev.to/dotnet/the-net-docs-show-informal-discussion-on-formal-education-3ke9</link>
      <guid>https://dev.to/dotnet/the-net-docs-show-informal-discussion-on-formal-education-3ke9</guid>
      <description>&lt;p&gt;In this episode of &lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;, Rachel Appel (&lt;a href="https://twitter.com/RachelAppel"&gt;@RachelAppel&lt;/a&gt;, &lt;a href="https://mvp.microsoft.com/en-us/PublicProfile/4015696"&gt;Microsoft MVP&lt;/a&gt; and Developer Advocate 🥑 at JetBrains) informally discusses formal education. As part of this week's #CheckUp, we highlighted &lt;a href="https://aka.ms/tour-of-csharp"&gt;the tour of C#&lt;/a&gt; as it relates to starting a career in .NET.&lt;/p&gt;

&lt;p&gt;The #HallwayTrack was filled to the brim with conversations about "🍻 over the years", discussions about Rachel's talk "works on machine", antipatterns with SQL tables having a single column - yeah imagine that?!&lt;/p&gt;

&lt;p&gt;We continued the conversation working through the differentiation between being a software developer and a software engineer, and how it relates to getting a computer science degree. We talk about mentorship and formal industry experience as an additional opportunity to skill-up. Other topics included: &lt;a href="https://www.linqpad.net"&gt;LINQPad&lt;/a&gt;, CMMI, UML, academic literature versus real-world product line engineering, living in other parts of the world, bubble sorts, aspect oriented programming, functional and object oriented programming, and even "Ask Jeeves". Yes, this episode was jam-packed!&lt;/p&gt;

&lt;h2&gt;
  
  
  Quote
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;In the 90's it was "hot" to be a &lt;strong&gt;Web Master&lt;/strong&gt;!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/d7wtGgaNeS4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you liked this video and would like to see some more of our .NET content, please subscribe to our &lt;a href="https://www.youtube.com/channel/UCIy_nKrwrd-naf_MPWtXdLA"&gt;The .NET Docs Show YouTube Channel&lt;/a&gt; and &lt;a href="https://twitter.com/dotnetdocsshow"&gt;follow us on Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  #CheckUp
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aka.ms/tour-of-csharp?WT.mc_id=devto-thedotnetdocs-dapine"&gt;Tour of C#&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Useful links
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.theurlist.com/the-dot-net-docs-show-engineering-rachel-appel"&gt;Rachel's URL list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>engineering</category>
      <category>dotnetdocsshow</category>
    </item>
    <item>
      <title>The .NET Docs Show: .NET Core 3.1 &amp; Twilio ☎️ workshop</title>
      <dc:creator>David Pine 🤓</dc:creator>
      <pubDate>Thu, 13 Aug 2020 20:22:52 +0000</pubDate>
      <link>https://dev.to/dotnet/the-net-docs-show-net-core-3-1-twilio-workshop-2ipe</link>
      <guid>https://dev.to/dotnet/the-net-docs-show-net-core-3-1-twilio-workshop-2ipe</guid>
      <description>&lt;p&gt;In this episode of &lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;, Layla Porter (&lt;a href="https://twitter.com/LaylaCodesIt"&gt;@LaylaCodesIt&lt;/a&gt;, &lt;a href="https://mvp.microsoft.com/en-us/PublicProfile/5003455"&gt;Microsoft MVP&lt;/a&gt; and ☎️ Twilio Evangelist) discusses her &lt;a href="https://bit.ly/2DHSgAs"&gt;.NET Core &amp;amp; Twilio workshop&lt;/a&gt;. As part of this week's #CheckUp, we cover the &lt;a href="http://aka.ms/dotnet-event-counters"&gt;.NET Core &lt;code&gt;EventCounters&lt;/code&gt; API&lt;/a&gt;, and briefly demonstrate it in action on an ASP.NET Core web API.&lt;/p&gt;

&lt;p&gt;The #HallwayTrack featured an amazing conversation about developing a workshop that is accessible to all developers! Layla takes an iterative approach, where refactoring becomes important in later segments, this is synonymous with modern agile development today. Layla mentions "brain-hurting", which caught my attention...later, we then debated "cake 🎂" vs. "pie 🥧"! Overall, the episode was packed with useful tidbits and words of encouragement!&lt;/p&gt;

&lt;h2&gt;
  
  
  Quote
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Leave the "egos" at the door, regardless of who you are. Be empathic!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/GTIsjQq-GXU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you liked this video and would like to see some more of our .NET content, please subscribe to our &lt;a href="https://www.youtube.com/channel/UCIy_nKrwrd-naf_MPWtXdLA"&gt;The .NET Docs Show YouTube Channel&lt;/a&gt; and &lt;a href="https://twitter.com/dotnetdocsshow"&gt;follow us on Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  #CheckUp
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://aka.ms/dotnet-event-counters?WT.mc_id=devto-thedotnetdocs-dapine"&gt;.NET Core: EventCounters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Useful links
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.theurlist.com/the-dot-net-docs-show-netcore-twilio-workshop-layla-porter"&gt;Layla's URL list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>dotnetcore</category>
      <category>dotnetdocsshow</category>
    </item>
    <item>
      <title>The .NET Docs Show: Microservices, managing disparate teams, and containers with Chase Aucoin</title>
      <dc:creator>David Pine 🤓</dc:creator>
      <pubDate>Thu, 06 Aug 2020 17:46:15 +0000</pubDate>
      <link>https://dev.to/dotnet/the-net-docs-show-microservices-managing-disparate-teams-and-containers-with-chase-aucoin-2k81</link>
      <guid>https://dev.to/dotnet/the-net-docs-show-microservices-managing-disparate-teams-and-containers-with-chase-aucoin-2k81</guid>
      <description>&lt;p&gt;In this episode of &lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;, Chase Aucoin (&lt;a href="https://twitter.com/ChaseAucoin"&gt;@ChaseAucoin&lt;/a&gt;), Director Of Engineering at The Paciello Group discusses &lt;a href="https://aka.ms/docker-dotnet?WT.mc_id=devto-thedotnetdocs-dapine"&gt;.NET with containers&lt;/a&gt; as part of this week's #CheckUp.&lt;/p&gt;

&lt;p&gt;The #HallwayTrack was filled with conversation about an open source repository that he wrote called, &lt;a href="https://github.com/chaseaucoin/CupcakeFactory.ServiceProxy"&gt;CupcakeFactory.ServiceProxy&lt;/a&gt;, how disparate teams can actually benefit from a microservices architecture, and .NET containers. We also learned about "POSO", a plain ole service object, DLL HELL, Composing orchestration, the acceleration of CLIs over GUIs, and so much more - including his microservices manifesto!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/UShy1RGCK0E"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you liked this video and would like to see some more of our .NET content, please subscribe to our &lt;a href="https://www.youtube.com/channel/UCIy_nKrwrd-naf_MPWtXdLA"&gt;The .NET Docs Show YouTube Channel&lt;/a&gt; and &lt;a href="https://twitter.com/dotnetdocsshow"&gt;follow us on Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  #CheckUp
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aka.ms/docker-dotnet?WT.mc_id=devto-thedotnetdocs-dapine"&gt;Containerize a .NET Core app&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Useful links
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.theurlist.com/the-dot-net-docs-show-containers-chase-aucoin"&gt;Chase's URL list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>microservices</category>
      <category>dotnetdocsshow</category>
    </item>
    <item>
      <title>The .NET Docs Show: Reverse proxies, DAPR, and microservices</title>
      <dc:creator>David Pine 🤓</dc:creator>
      <pubDate>Thu, 30 Jul 2020 19:32:33 +0000</pubDate>
      <link>https://dev.to/dotnet/the-net-docs-show-reverse-proxies-dapr-and-microservices-25bd</link>
      <guid>https://dev.to/dotnet/the-net-docs-show-reverse-proxies-dapr-and-microservices-25bd</guid>
      <description>&lt;p&gt;In this episode of &lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;, Cecil Phillip (Senior Cloud Advocate &lt;a href="https://twitter.com/cecilphillip"&gt;@cecilphillip&lt;/a&gt;) discusses &lt;a href="https://aka.ms/learn-microservices?WT.mc_id=devto-thedotnetdocs-dapine"&gt;microservices in .NET&lt;/a&gt; as part of this week's #CheckUp. We shared how Cecil will be joining The .NET Docs Show as a co-host, as we'll soon be announcing a rotating hosting schedule.&lt;/p&gt;

&lt;p&gt;The #HallwayTrack was filled with conversation relevant to the #dotNETConf microservices theme! We talk about pub/sub, service discovery, configuring (our ❤️ of YML, pronounced "fimmel"), tracing and observability, metrics, error monitoring, and more. Wow, that is a lot to say, but we're not done, we share tools, platforms, and architecture suggestions. &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/5u1YDR4W7Ic"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you liked this video and would like to see some more of our .NET content, please subscribe to our &lt;a href="https://www.youtube.com/channel/UCIy_nKrwrd-naf_MPWtXdLA"&gt;The .NET Docs Show YouTube Channel&lt;/a&gt; and &lt;a href="https://twitter.com/dotnetdocsshow"&gt;follow us on Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  #CheckUp
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aka.ms/learn-microservices?WT.mc_id=devto-thedotnetdocs-dapine"&gt;Migrate from .NET Framework to .NET Core&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Useful links
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.theurlist.com/the-dot-net-docs-show-microservices-cecil-phillip"&gt;Cecil's URL list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>microservices</category>
      <category>dapr</category>
      <category>dotnetdocsshow</category>
    </item>
    <item>
      <title>The .NET Docs Show: .NET desktop app development</title>
      <dc:creator>David Pine 🤓</dc:creator>
      <pubDate>Thu, 23 Jul 2020 17:57:14 +0000</pubDate>
      <link>https://dev.to/dotnet/the-net-docs-show-net-desktop-app-development-42cl</link>
      <guid>https://dev.to/dotnet/the-net-docs-show-net-desktop-app-development-42cl</guid>
      <description>&lt;p&gt;In this episode of &lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;, Olia Gavrysh (.NET PM &lt;a href="https://twitter.com/oliagavrysh"&gt;@oliagavrysh&lt;/a&gt;) discusses &lt;a href="https://aka.ms/migrate-from-netfx?WT.mc_id=devto-thedotnetdocs-dapine"&gt;migrating from .NET Framework to .NET Core&lt;/a&gt; as part of the #CheckUp. She later demonstrates Visual Studio feature toggles specific to XAML, WPF, etc. Further into the #HallwayTrack conversation, Desktop app dev spans covering WinForms, WPF, UWP, and even a bit of MAUI. She shares some future features with design-time data for visualizations, binding failures, and .NET 5 target framework monikers.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/mWhSgasKVhE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you liked this video and would like to see some more of our .NET content, please subscribe to our &lt;a href="https://www.youtube.com/channel/UCIy_nKrwrd-naf_MPWtXdLA"&gt;The .NET Docs Show YouTube Channel&lt;/a&gt; and &lt;a href="https://twitter.com/dotnetdocsshow"&gt;follow us on Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  #CheckUp
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aka.ms/migrate-from-netfx?WT.mc_id=devto-thedotnetdocs-dapine"&gt;Migrate from .NET Framework to .NET Core&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Useful links
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.theurlist.com/net-docs-show-07-23-2020"&gt;Olia's URL list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dotnetdocs.dev"&gt;The .NET Docs Show&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>dev</category>
      <category>dotnetdocsshow</category>
    </item>
  </channel>
</rss>
