Lanyon A Simple Blogger template

Free tutorials, courses, generative tools, and projects built with Javascript, PHP, Python, ML, AI,.Net, C#, Microsoft, Youtube, Github Code Download and more.

May 2023

Archive for May 2023

Speech Recognition in .NET MAUI with CommunityToolkit

Note: This is a guest blog post by Vladislav Antonyuk, who is a senior software engineer at DataArt and a core contributor of the .NET MAUI Community Toolkit.

The .NET MAUI Community Toolkit is a collection of extensions and components that can be used to extend the functionality of .NET MAUI apps. The toolkit is open-source and community-driven, and it is constantly being updated with new features and improvements.

One of the features that the .NET MAUI Community Toolkit offers is Speech To Text. This allows converting spoken words into text, which can be used in a variety of ways. For example, users could use speech-to-text to create a voice-activated assistant or to transcribe audio recordings.

Here’s an example of how to use SpeechToText in C#:

var isGranted = await SpeechToText.Default.RequestPermissions(cancellationToken);
if (!isGranted)
{
    await Toast.Make("Permission not granted").Show(CancellationToken.None);
    return;
}
var recognitionResult = await SpeechToText.Default.ListenAsync(
                                    CultureInfo.GetCultureInfo("uk-ua"),
                                    new Progress(partialText =>
                                    {
                                        RecognitionText += partialText + " ";
                                    }), cancellationToken);
if (recognitionResult.IsSuccessful)
{
    RecognitionText = recognitionResult.Text;
}
else
{
    await Toast.Make(recognitionResult.Exception?.Message ?? "Unable to recognize speech").Show(CancellationToken.None);
}

This code requests microphone and speech recognition permissions, then starts listening for speech input, in a result it will set any recognized text to the RecognitionText variable.

When using SpeechToText, it captures and handles all exceptions while returning the result of the operation. However, if you prefer to specifically handle certain exceptions, such as when the user cancels the operation, you can enclose your code within a try/catch block and utilize the EnsureSuccess method:

var isGranted = await SpeechToText.Default.RequestPermissions(cancellationToken);
if (!isGranted)
{
    await Toast.Make("Permission not granted").Show(CancellationToken.None);
    return;
}
var recognitionResult = await SpeechToText.Default.ListenAsync(
                                    CultureInfo.GetCultureInfo("uk-ua"),
                                    new Progress(), cancellationToken);
recognitionResult.EnsureSuccess();
await Toast.Make($"RecognizedText: {recognitionResult.Text}").Show(cancellationToken);

Note: SpeechToText requires additional permissions for the app.

Please read the documentation to correctly set up the application.

Summary

SpeechToText is a powerful new feature that can be found as part of the CommunityToolkit.Maui library. It can be used to create a variety of more accurate, more responsive, and more engaging speech-enabled applications.

When utilizing speech-to-text, there are several additional factors to take into account:

  • The availability of an Internet connection may be necessary depending on the chosen recognition language. On Windows, the speech recognition system automatically adjusts between online and offline modes based on Internet accessibility.
  • The accuracy of speech-to-text is influenced by factors such as microphone quality and the surrounding environment.
  • Enhancing the accuracy of speech-to-text can be achieved by using a noise-canceling microphone and speaking clearly and at a slower pace.
  • Training the speech recognizer with your own voice is another method to improve the accuracy of speech-to-text.

Finally, be sure to check out the full release notes for .NET MAUI CommunityToolkit version 5.2.0 for even more great resources for .NET MAUI developers.

The post Speech Recognition in .NET MAUI with CommunityToolkit appeared first on .NET Blog.



source https://devblogs.microsoft.com/dotnet/speech-recognition-in-dotnet-maui-with-community-toolkit/

Build AI Apps with ChatGPT, DALL-E, and GPT-4 – Full Course for Beginners


Curriculum for the course Build AI Apps with ChatGPT, DALL-E, and GPT-4 – Full Course for Beginners

This course will teach you how to build AI-powered apps with the ChatGPT, Dall-E and GPT-4 APIs. Go here to try the interactive browser-version: https://scrimba.com/learn/buildaiapps ✏️ This course was created by Tom Chant, a teacher at Scrimba. If you have any feedback to Tom, please reach out to him on Twitter here: https://twitter.com/tpchant Also, follow Scrimba on YouTube here: https://www.youtube.com/c/Scrimba We recommend that you learn basic HTML, CSS, and JavaScript before taking this course. Here are two free courses that will get you up to speed: 🔗 HTML & CSS: https://scrimba.com/learn/htmlandcss 🔗 JavaScript: https://scrimba.com/learn/learnjavascript ⭐️ Code ⭐️ 🔗 Download via Scrimba: https://scrimba.com/learn/buildaiapps 💫 Links mentioned in course: 🔗 GPT-4 waiting list: https://scrimba.com/links/gpt4-waitlist-openai 🔗 OpenAI Home: https://scrimba.com/links/openai 🔗 OpenAI Docs: https://scrimba.com/links/openai-docs-intro 🔗 OpenAI Completions endpoint docs: https://scrimba.com/links/openai-completions-docs 🔗 GPTTools.com model comparison: https://scrimba.com/links/open-ai-comparison-tool 🔗 OpenAI Playground: https://scrimba.com/links/open-ai-playground 🔗 Dall-E: https://scrimba.com/links/dall-e-openai 🔗 OpenAI endpoint compatibility table: https://scrimba.com/links/chatgpt-endpoint-compatibility 🔗 GPT-4 Chatbot conversation object format: https://scrimba.com/links/chatgpt-object-format 🔗 Data used to fine-tune We-Wingit Chatbot: https://scrimba.com/links/we-wingit-data-csv 🔗 Firebase home: https://scrimba.com/links/firebase-home 🔗 Firebase .val() method: https://scrimba.com/links/firebase-val-method 🔗 Object.values MDN: https://scrimba.com/links/object-dot-values 🔗 Netlify: https://scrimba.com/links/netlify-home ⭐️ Contents ⭐️ 0:00:00 Introduction 0:01:19 Course Intro 0:04:56 MoviePitch intro 0:07:53 The Boilerplate 0:11:26 Getting an OpenAI API Key 0:13:32 Getting info for fetch request 0:15:14 Building an OpenAI fetch request 0:20:23 The first AI fetch request 0:26:41 Models 0:30:18 Tools 0:34:03 Refactor to use dependency l - env variable 0:38:11 Refactor to use dependency ll - The dependency 0:41:07 Refactor to use dependency lll - update fetchReply 0:44:40 Take out of Scrimba 0:46:45 Personalising the message 0:53:04 Tokens 0:57:09 fetchSynopsis 1:03:44 Aside - few shot approach 1:10:45 Aside - few shot approach ll 1:13:42 Refactor fetchSynopsis 1:21:00 Architecture 1:23:23 Title and Temperature 1:31:52 Reaching for the stars 1:37:52 Aside - createImage 1:46:56 fetchImagePrompt 1:54:21 Displaying the image and finishing off the UX 2:03:16 OutroKnowItAll: GPT-4 Chatbox2:06:47 KnowItAll Intro 2:09:40 Starter Code 2:13:10 Aside: How ChatGPT models work for chatbots 2:18:24 Conversation and instructions 2:20:21 Add user input to conversation array 2:23:06 The createChatCompletion endpoint 2:24:38 The model and object 2:28:46 Render the output, update the array 2:33:37 Aside: Theory: Frequency and presence penalties 2:37:07 presence_penalty practice 2:38:36 frequency_penalty practice 2:44:54 The chatbot’s personality 2:47:06 Firebase Intro 2:48:27 Firebase Account and database set up 2:50:43 Firebase dependency and database set up 2:55:53 Push method and instructions object 2:58:33 Update fetch Reply 3:02:24 Update fetchReply 2 3:04:49 Update the database 3:07:19 Render the conversation from the DB 3:12:02 The “start over” button 3:15:20 OutroWe-Wingit: Fine-tuned chatbot3:17:28 Intro to fine-tuning 3:20:04 Convert the Chatbot to We-Wingit 3:22:15 An Overview of the AI 3:23:52 Data for fine-tuning 3:26:34 The data we’re using 3:30:05 CLI 1 - Setting up the environment 3:33:03 CLI 2 - Data Preparation Tool 3:37:03 CLI 3 - Tuning the model 3:38:55 Updating the JS 1 3:41:33 Updating the JS 2 3:44:15 Updating the JS 3 3:47:01 The Separator 3:52:32 Aside - Stop Sequence 3:55:50 Adding the stop sequence 4:00:36 n_epochs 4:07:24 Intro to deployment 4:09:46 Download and GitHub 4:12:07 Netlify sign-up 4:13:56 Add Netlify env var 4:15:54 Netlify CLI 4:17:30 Netlify serverless function 1 4:19:52 Update fetchReply 4:24:28 Serverless function 2 4:27:30 Serverless function 3 4:29:21 Serverless function 4 4:32:32 Outro 🎉 Thanks to our Champion and Sponsor supporters: 👾 davthecoder 👾 jedi-or-sith 👾 南宮千影 👾 Agustín Kussrow 👾 Nattira Maneerat 👾 Heather Wcislo 👾 Serhiy Kalinets 👾 Justin Hual 👾 Otis Morgan -- Learn to code for free and get a developer job: https://www.freecodecamp.org Read hundreds of articles on programming: https://freecodecamp.org/news

Watch Online Full Course: Build AI Apps with ChatGPT, DALL-E, and GPT-4 – Full Course for Beginners


Click Here to watch on Youtube: Build AI Apps with ChatGPT, DALL-E, and GPT-4 – Full Course for Beginners


This video is first published on youtube via freecodecamp. If Video does not appear here, you can watch this on Youtube always.


Udemy Build AI Apps with ChatGPT, DALL-E, and GPT-4 – Full Course for Beginners courses free download, Plurasight Build AI Apps with ChatGPT, DALL-E, and GPT-4 – Full Course for Beginners courses free download, Linda Build AI Apps with ChatGPT, DALL-E, and GPT-4 – Full Course for Beginners courses free download, Coursera Build AI Apps with ChatGPT, DALL-E, and GPT-4 – Full Course for Beginners course download free, Brad Hussey udemy course free, free programming full course download, full course with project files, Download full project free, College major project download, CS major project idea, EC major project idea, clone projects download free

Build and Deploy a LeetCode Clone with React, Next JS, TypeScript, Tailwind CSS, Firebase


Curriculum for the course Build and Deploy a LeetCode Clone with React, Next JS, TypeScript, Tailwind CSS, Firebase

In this project tutorial, you will build a LeetCode clone with React, Tailwind CSS, Next.JS, Typescript, and Firebase. Also deploy it to Vercel at the end. 💻 Source Code: https://github.com/burakorkmez/leetcode-clone-youtube 💻 Github Gist: https://gist.github.com/burakorkmez/5ba4c1a910f396050a2ac2f229418f54 🔗 Demo Project: https://leetclone.vercel.app/problems/two-sum 🔗 Discord Server(to ask questions): https://discord.gg/YFn2WyheZV Course created by @burakorkmez ⭐️ Contents ⭐️ 0:00:00 Intro 0:00:29 Demo of The App 0:05:23 Project Setup 0:08:51 Auth Page Setup 0:13:19 Auth Page Navbar 0:18:54 AuthModal Layout UI 0:22:16 Login UI 0:29:41 Signup UI 0:31:59 ResetPassword UI 0:33:13 Integrating Recoil Auth State 0:47:31 Firebase Setup 0:52:41 Signup Functionality 1:01:21 Login Functionality 1:05:14 Auth Page Route Guard 1:08:01 Home Page UI 1:12:50 Problems Table UI 1:21:01 Youtube Video Modal 1:29:51 Topbar Update On Auth 1:32:46 Logout Functionality 1:37:11 Auth Modal Optimizations 1:38:44 Reset Password Functionality 1:42:56 React Toastify 1:47:19 Image optimizations 1:54:33 Creating [pid] page and update topbar 2:02:27 Creating Timer.tsx 2:12:31 Creating Workspace.tsx 2:15:18 Splitting The Page 2:19:47 Creating ProblemDescrition.tsx 2:26:03 Creating PreferenceNav.tsx 2:34:39 Creating Code Editor 2:41:10 Adding Test Cases UI 2:50:15 Creating EditorFooter.tsx 2:56:32 Data Handling Explained 3:01:50 Two Sum Problem 3:12:52 Reverse Linked List 3:18:05 Jump Game Problem 3:20:13 Valid Parentheses Problem 3:21:16 Search 2d Matrix Problem 3:22:01 Using SSG for [pid].tsx 3:46:47 Updating testcases UI 3:51:39 Initializing Firestore 3:55:56 Adding problems to DB 4:12:09 Fetch Problems 4:32:58 Create Users in DB 4:40:33 Fetch problem data 4:51:28 Loading skeletons 4:56:35 Get user data on the problem 5:06:23 Like functionality 5:27:51 Dislike functionality 5:39:03 Star functionality 5:46:03 Next and Previous problem 5:55:23 Solving Hydration Error 5:58:08 Confetti Celebration 6:01:43 Code Submission 6:20:50 Save code to localstorage 6:24:48 Solving bugs 6:31:08 Toggle Full Screen 6:34:13 SettingsModal UI 6:41:33 SettingsModal Functionality 6:54:23 Update Home Page 6:59:11 Sandboxing technique 7:01:58 Deployment 7:05:08 Firebase Rules 🎉 Thanks to our Champion and Sponsor supporters: 👾 davthecoder 👾 jedi-or-sith 👾 南宮千影 👾 Agustín Kussrow 👾 Nattira Maneerat 👾 Heather Wcislo 👾 Serhiy Kalinets 👾 Justin Hual 👾 Otis Morgan -- Learn to code for free and get a developer job: https://www.freecodecamp.org Read hundreds of articles on programming: https://freecodecamp.org/news

Watch Online Full Course: Build and Deploy a LeetCode Clone with React, Next JS, TypeScript, Tailwind CSS, Firebase


Click Here to watch on Youtube: Build and Deploy a LeetCode Clone with React, Next JS, TypeScript, Tailwind CSS, Firebase


This video is first published on youtube via freecodecamp. If Video does not appear here, you can watch this on Youtube always.


Udemy Build and Deploy a LeetCode Clone with React, Next JS, TypeScript, Tailwind CSS, Firebase courses free download, Plurasight Build and Deploy a LeetCode Clone with React, Next JS, TypeScript, Tailwind CSS, Firebase courses free download, Linda Build and Deploy a LeetCode Clone with React, Next JS, TypeScript, Tailwind CSS, Firebase courses free download, Coursera Build and Deploy a LeetCode Clone with React, Next JS, TypeScript, Tailwind CSS, Firebase course download free, Brad Hussey udemy course free, free programming full course download, full course with project files, Download full project free, College major project download, CS major project idea, EC major project idea, clone projects download free

Django ChatGPT Clone Tutorial


Curriculum for the course Django ChatGPT Clone Tutorial

Learn how to use Django and the OpenAI API to create a ChatGPT clone, complete with user authentication. ✏️ Course created by @CodeWithTomi 🎉 Thanks to our Champion and Sponsor supporters: 👾 davthecoder 👾 jedi-or-sith 👾 南宮千影 👾 Agustín Kussrow 👾 Nattira Maneerat 👾 Heather Wcislo 👾 Serhiy Kalinets 👾 Justin Hual 👾 Otis Morgan -- Learn to code for free and get a developer job: https://www.freecodecamp.org Read hundreds of articles on programming: https://freecodecamp.org/news

Watch Online Full Course: Django ChatGPT Clone Tutorial


Click Here to watch on Youtube: Django ChatGPT Clone Tutorial


This video is first published on youtube via freecodecamp. If Video does not appear here, you can watch this on Youtube always.


Udemy Django ChatGPT Clone Tutorial courses free download, Plurasight Django ChatGPT Clone Tutorial courses free download, Linda Django ChatGPT Clone Tutorial courses free download, Coursera Django ChatGPT Clone Tutorial course download free, Brad Hussey udemy course free, free programming full course download, full course with project files, Download full project free, College major project download, CS major project idea, EC major project idea, clone projects download free

.NET Framework May 2023 Cumulative Update Preview Updates

Today, we are releasing the May 2023 Cumulative Update Preview for .NET Framework.

Quality and Reliability

This release contains the following quality and reliability improvements.

WPF1
  • Addresses an issue to avoid ArgumentOutOfRangeException when ControlTemplate has two or more ItemsPresenter sharing a single ItemsCollection.
  • Addresses ArgumentNullException that can arise in apps, or libraries, that directly set the IsOpen property on ToolTips or their Popups.
SQL Connectivity
  • Addresses an issue where SQL connection created is not terminated by the library when this error is thrown or is leaked in the client application.

1 Windows Presentation Foundation (WPF)

Getting the Update

The Cumulative Update Preview is available via Windows Update and Microsoft Update Catalog.

Customers using Windows 11, version 22H2, you will now find .NET Framework updates on the Settings > Windows Update > Advanced options > Optional updates page.

Advanced system administrators can also take use of the below direct Microsoft Update Catalog download links to .NET Framework-specific updates. Before applying these updates, please ensure that you carefully review the .NET Framework version applicability, to ensure that you only install updates on systems where they apply.

The following table is for Windows 10+ versions.

Product Version Cumulative Update
Windows 11, version 21H2 5026959
.NET Framework 3.5, 4.8 Catalog 5026514
.NET Framework 3.5, 4.8.1 Catalog 5026517
Windows 10, version 22H2 5026958
.NET Framework 3.5, 4.8 Catalog 5026513
.NET Framework 3.5, 4.8.1 Catalog 5026516

 

Previous Monthly Rollups

The last few .NET Framework Monthly updates are listed below for your convenience:

The post .NET Framework May 2023 Cumulative Update Preview Updates appeared first on .NET Blog.



source https://devblogs.microsoft.com/dotnet/dotnet-framework-may-2023-cumulative-update-preview-updates/

Transform your business with smart .NET apps powered by Azure and ChatGPT

With ChatGPT, you can unleash the full potential of AI in your .NET applications and create amazing user experiences with natural language. ChatGPT is more than just a tool; it’s a game-changer for how we access and analyze data. Whether you use Azure, SQL Server, or any other data source, you can easily integrate ChatGPT into your .NET projects and start building intelligent apps today.

In this post, I’ll provide a quick overview of what intelligent applications are. Then, using a sample application, I’ll show how using a combination of Azure services like Azure OpenAI Service and Azure Cognitive Search, you can build your own intelligent .NET applications.

TLDR

Do you learn best from experience? Head over the repo and jump right in!

What are intelligent applications?

Intelligent applications are AI-powered applications that transform users’ productivity, automate processes, and derive insights.

Bing Chat is an example of an intelligent application.

Image of Bing Chat conversation about recipes

AI is at the core of Bing Chat. Bing Chat uses AI to take in complex queries, summarize relevant information from various sources, and generates responses.

Build intelligent apps with .NET

Now that you have a sense of what intelligent applications are, let’s look at a sample application built with .NET, Azure, and ChatGPT.

Let’s say you have an internal enterprise knowledgebase which contains information about job roles, health care plans, and other business documents.

Your users may already be able to search through this knowledgebase, but searching for answers to specific questions by filtering through all the documents in the search results can be time-consuming.

Using AI models like ChatGPT, you can transform your user’s productivity by summarizing the information contained in those documents and extracting key insights.

Application architecture

The source code for the application is on GitHub. The following are the core components that make up the application.

Architectural diagram of ChatGPT .NET intelligent app

User interface

The application’s chat interface is a Blazor WebAssembly static web application. This interface is what accepts user queries, routes request to the application backend, and displays generated responses. If you’re working with client applications on mobile or desktop, .NET MAUI would be a good option for this component as well.

Application backend

The application backend is an ASP.NET Core Minimal API. The backend hosts the Blazor static web application and what orchestrates the interactions among the different services. Services used in this application include:

  • Azure Cognitive Search – indexes documents from the data stored in an Azure Storage Account. This makes the documents searchable.
  • Azure OpenAI Service – provides the ChatGPT models to generate responses. Additionally, Semantic Kernel is used in conjunction with the Azure OpenAI Service to orchestrate the more complex AI workflows.
  • Azure Redis Cache – caches responses. Doing so reduces latency when generating responses to similar questions and helps manage costs because you don’t have to make another request to Azure OpenAI Service.

Resource provisioning and developer environments

With all the services mentioned, the process of getting started may seem difficult. However, we’ve streamlined that process using the Azure Developer CLI. If you don’t want to commit to installing any of the dependencies, we can help you there as well. Just open the repository in GitHub Codespaces and use the Azure Developer CLI to provision your services.

Using ChatGPT on your documents

Now that you know the components that make up this app, let’s see how they work together in the context of a chat.

Before you chat with your documents, you’ll want to have a knowledgebase you can query. Chances are, you might already have one. For this sample application, we’ve kept it simple. There are a set of PDF documents in the application’s data directory. To load them into Azure Storage and index them in Azure Cognitive Search, we’ve built a C# console application.

App architecture showing knowledgebase building components

The C# console application does the following:

  1. Uses Azure Form Recognizer to extract the text from each of the documents.
  2. Splits the documents into smaller excerpts. (chunking)
  3. Creates a new PDF document for each of the excerpts.
  4. Uploads the excerpt to an Azure Storage Account.
  5. Creates an index in Azure Cognitive Search.
  6. Adds the documents to the Azure Cognitive Search index.

Why are the PDFs split into chunks?

OpenAI models like ChatGPT have token limits. For more information on token limits see the Azure OpenAI Service quotas and limits reference guide.

In this example, the knowledgebase building process is manual. However, based on your needs you may opt to run this as an event-driven job whenever a new document is added to the Azure Storage Account or in batches as a background job.

Another pattern worth mentioning involves the use of embeddings to encode semantic information about your data. These embeddings are typically stored in vector databases. For a quick introduction to embeddings, see the Azure OpenAI embeddings documentation. That pattern is not the main one used in this sample and beyond the scope of this post. However, in future posts, we’ll cover those topics in more detail, so stay tuned!

Chat with your data

Once you have your knowledgebase set up, it’s time to chat with it.

Image of a question being asked on ChatGPT .NET web app

Querying the knowledgebase starts off with the user entering a question in the Blazor web app. The user query is then routed to the ASP.NET Core Minimal Web API.

Inside the web api, the chat endpoint handles the request.

api.MapPost("chat", OnPostChatAsync);

To handle the request, we apply a pattern known as Retrieval Augmented Generation which does the following:

  1. Queries the knowledgebase for relevant documents
  2. Uses the relevant documents as context to generate a response

Querying the knowledgebase

App architecture showing knowledgebase querying components

The knowledgebase is queried using Azure Cognitive Search. Azure Cognitive Search though doesn’t understand the natural language provided by the user. Fortunately, we can use ChatGPT to help translate the natural language into a query.

Using Semantic Kernel, we create a method that defines a prompt template and adds the chat history and user question as additional context to generate an Azure Cognitive Search query.

private ISKFunction CreateQueryPromptFunction(ChatTurn[] history)
{
    var queryPromptTemplate = """
        Below is a history of the conversation so far, and a new question asked by the user that needs to be answered by searching in a knowledge base about employee healthcare plans and the employee handbook.
        Generate a search query based on the conversation and the new question.
        Do not include cited source filenames and document names e.g info.txt or doc.pdf in the search query terms.
        Do not include any text inside [] or <<>> in the search query terms.
        If the question is not in English, translate the question to English before generating the search query.

        Chat History:
        

        Question:
        

        Search query:
        """;

    return _kernel.CreateSemanticFunction(queryPromptTemplate,
        temperature: 0,
        maxTokens: 32,
        stopSequences: new[] { "\n" });
}

That method is then used to compose the query generation prompt.

var queryFunction = CreateQueryPromptFunction(history);
var context = new ContextVariables();
context["chat_history"] = history.GetChatHistoryAsText();
context["question"] = userQuestion;

When you run the Semantic Kernel function, it provides the composed prompt to the Azure OpenAI Service ChatGPT model which generates the query.

var query = await _kernel.RunAsync(context, cancellationToken, queryFunction);

Given the question “What is included in my Northwind Health Plus plan that is not in standard?”, the generated query might look like Northwind Health Plus plan coverage

Once your query is generated, use the Azure Cognitive Search client to query the index containing your documents.

var documentContents = await _searchClient.QueryDocumentsAsync(query.Result, overrides, cancellationToken);

At this point, Azure Cognitive Search will return results containing the documents most relevant to your query. Results might look like the following:

Northwind_Health_Plus_Benefits_Details-108.pdf: You must provide Northwind Health Plus with a copy of the EOB for the Primary Coverage, as well as a copy of the claim that you submitted to your Primary Coverage. This will allow us to determine the benefits that are available to you under Northwind Health Plus. It is important to note that Northwind Health Plus does not cover any expenses that are considered to be the responsibility of the Primary Coverage.

Benefit_Options-3.pdf: The plans also cover preventive care services such as mammograms, colonoscopies, and other cancer screenings. Northwind Health Plus offers more comprehensive coverage than Northwind Standard. This plan offers coverage for emergency services, both in-network and out-of-network, as well as mental health and substance abuse coverage. Northwind Standard does not offer coverage for emergency services, mental health and substance abuse coverage, or out-of-network services

Generating a response

Now that you have documents with relevant information to help answer the user question, it’s time to use them to generate an answer.

App architecture showing response generation components

We start off by using Semantic Kernel to create a function that composes a prompt containing chat history, documents, and follow-up questions.

private const string AnswerPromptTemplate = """
    <|im_start|>system
    You are a system assistant who helps the company employees with their healthcare plan questions, and questions about the employee handbook. Be brief in your answers.
    Answer ONLY with the facts listed in the list of sources below. If there isn't enough information below, say you don't know. Do not generate answers that don't use the sources below. If asking a clarifying question to the user would help, ask the question.
    For tabular information return it as an html table. Do not return markdown format.
    Each source has a name followed by colon and the actual information, always include the full path of source file for each fact you use in the response. Use square brakets to reference the source. Don't combine sources, list each source separately.
    ### Examples
    Sources:
    info1.txt: deductibles depend on whether you are in-network or out-of-network. In-network deductibles are $500 for employees and $1000 for families. Out-of-network deductibles are $1000 for employees and $2000 for families.
    info2.pdf: Overlake is in-network for the employee plan.
    reply: In-network deductibles are $500 for employees and $1000 for families [info1.txt][info2.pdf] and Overlake is in-network for the employee plan [info2.pdf].
    ###
    
    
    Sources:
    
    <|im_end|>
    
    """;

private const string FollowUpQuestionsPrompt = """
    Generate three very brief follow-up questions that the user would likely ask next about their healthcare plan and employee handbook.
    Use double angle brackets to reference the questions, e.g. <<Are there exclusions for prescriptions?>>.
    Try not to repeat questions that have already been asked.
    Only generate questions and do not generate any text before or after the questions, such as 'Next Questions'
    """;

Are we hard-coding answers in the prompt?

We’re not. The examples in the prompt serve as guidelines for the model to generate the answer. This is known as few-shot learning.

private ISKFunction CreateAnswerPromptFunction(string answerTemplate, RequestOverrides? overrides) =>
    _kernel.CreateSemanticFunction(answerTemplate,
        temperature: overrides?.Temperature ?? 0.7,
        maxTokens: 1024,
        stopSequences: new[] { "<|im_end|>", "<|im_start|>" });

ISKFunction answerFunction;
var answerContext = new ContextVariables();

answerContext["chat_history"] = history.GetChatHistoryAsText();
answerContext["sources"] = documentContents;
answerContext["follow_up_questions_prompt"] = ReadRetrieveReadChatService.FollowUpQuestionsPrompt;

answerFunction = CreateAnswerPromptFunction(ReadRetrieveReadChatService.AnswerPromptTemplate, overrides);

prompt = ReadRetrieveReadChatService.AnswerPromptTemplate;

When you run the Semantic Kernel function, it provides the composed prompt to the Azure OpenAI Service ChatGPT model which generates the response.

var ans = await _kernel.RunAsync(answerContext, cancellationToken, answerFunction);

After some formatting, the answer is returned to the web app and displayed. The result might look similar to the following:

Image displaying responses of ChatGPT generated responses in .NET web app

In order to build more trust in the responses, the response includes citations, the full prompt used to generate the response, and supporting content containing the documents from the search results.

Build your own intelligent apps

We’re excited for the future of intelligent applications in .NET.

Check out the application source code on GitHub and use it as a template to start building intelligent applications with your own data.

We want to hear from you!

Are you interested in building or currently building intelligent apps? Take a few minutes to complete this survey.

Additional resources

The post Transform your business with smart .NET apps powered by Azure and ChatGPT appeared first on .NET Blog.



source https://devblogs.microsoft.com/dotnet/transform-business-smart-dotnet-apps-azure-chatgpt/

Announcing Azure Monitor OpenTelemetry Distro

Our goal is to make Azure the most observable cloud. To that end, we are refactoring Azure’s native observability platform to be based on OpenTelemetry, an industry standard for instrumenting applications and transmitting telemetry.

These investments include plans to retrofit the Azure Monitor ingress and all our Azure SDKs to use OTLP for traces and metrics, making it possible to use any language OpenTelemetry supports on Azure. As part of these investments, we have strong support for observability in .NET, where telemetry can be collected using the OpenTelemetry SDK for .NET.

One advantage of OpenTelemetry is that it’s vendor-neutral. For example, the exporter model enables the data to be used with a variety of APM systems, including open-source projects such as Prometheus, Grafana, Jaeger & Zipkin, and commercial products such as Azure’s native monitoring solution, Azure Monitor.

When it comes to Azure’s native observability solution, Azure Monitor, we want to make it as easy as possible for you to enable OpenTelemetry. The “Azure Monitor OpenTelemetry Distro” is your one-stop-shop to power Azure Monitor. While we are currently focused on lighting up Application Insights, we plan to expand this distro to cover other scenarios within Azure Monitor in the future, such as piping special purpose logs/events to your own custom-defined table in Log Analytics.

OpenTelemetry and .NET can have different terminology for the same things – Open Telemetry is a cross platform standard where vendors create “Distros” for multiple languages. While Distro is often thought of in the context of Linux, in this case, the term “Distro” is equivalent to library or package that bundles together OpenTelemetry components. For .NET this distro is shipped as the Nuget Package Azure.Monitor.OpenTelemetry.AspNetCore and is backed by a github project.

Introducing ILogger Correlation

Before we get into the details of the Azure Monitor OpenTelemetry Distro, we want to catch you up on how far OpenTelemetry has come on .NET:

  • In March 2021, we announced that OpenTelemetry Tracing APIs would be part of .NET 5.
  • In June 2021, we announced that OpenTelemetry metrics API would be part of .NET 6.

With the help of the OpenTelemetry SDK, logging using ILogger now supports the automatic capturing of Activity IDs for correlation to traces, so all three signal types are now available for full end-to-end observability. The video shows how to see this correlation in Application Insights.

How to make OpenTelemetry easier to use on Azure?

One of the challenges for observability solutions like Azure Monitor is making it easy for customers to get started with OpenTelemetry.

There’s an initial learning curve where application developers must teach themselves the basics of OpenTelemetry, consider which instrumentation libraries they need, assess which configurations matter to their scenario, and determine whether any vendor-specific processors are required for interoperability with their existing APM.

Setting all this up requires learning lots of new concepts, and developers are forced to keep track of several moving parts.

In addition, OpenTelemetry provides a rich API surface with dozens of instrumentation libraries to enable the wide range of observability scenarios customers may need. We received feedback from developers that they want a simpler entry point to follow that enables the best practices for monitoring their ASP.NET core web applications with Azure.

Introducing the Azure Monitor OpenTelemetry Distro

To make this enablement easier, the Distro includes helper methods that enable Azure Monitor Experiences including Application Insights with just a single line of code.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddOpenTelemetry().UseAzureMonitor();

var app = builder.Build();

app.Run();

With the single line of code, the distro includes everything you need for a first-class Azure experience, including:

  • Popular instrumentation libraries for auto-collection of traces, metrics, and logs
  • Correlated traces when using Application Insights SDKs in other parts of your service
  • Azure Active Directory (AAD) Authentication
  • Application Insights Standard Metrics
  • Automatic detection of Azure Resources to auto-populate key experiences.

In the months to come, we plan to add more features to the distro including Live Metrics. With OpenTelemetry semantic conventions reaching stability, Azure SDK instrumentation will provide insights into your app’s communication with Azure Services. This will bring observability to messaging scenarios.

As we adapt our backend systems, you’ll get the full benefits of OpenTelemetry including exemplars and histograms. Over time, we hope to contribute back some of these unique Azure-Specific features to OpenTelemetry so they are part of the broader community, but our commitment is to get the best to our customers as soon as possible via the Distro.

In addition to ASP.NET core, we are also releasing Azure Monitor OpenTelemetry Distros in JavaScript (Node.js) and Python. We have had an OpenTelemetry-based Java Distro in production for several years, and it’s been encouraging to see strong adoption of Java Observability on Azure Monitor.

Open and Extensible Design

Even though this is a “vendor-specific wrapper”, our design is open and extensible. Our goal is ease-of-use; not vendor-lock. It follows the layered approach for telemetry APIs in .NET.

Diagram showing the layered approach of the Azure Monitor OpenTelemetry Distro

For example, let’s say down the road you want to add a second exporter. You can instantiate one alongside Azure Monitor Exporter. You can also add community instrumentation libraries not already bundled in with the Distro to expand data collection.

When to use the Distro versus the Exporter?

For the majority of ASP.NET Core customers, we anticipate the distro will be attractive because monitoring can quickly become complicated, and we want to take the guess work out of it. However, there will be some customers who want to touch all the knobs and levers, and for these customers the Azure Monitor exporter is still available as a standalone component. For all other application types besides ASP.NET Core, the exporter remains our recommended solution for now.

How do I get started?

Getting started with the Distro is simple. It’s only a few steps documented on Azure Monitor Application Insights OpenTelemetry Enablement Official Docs. Check it out and let us know what you think. Join the chat at the bottom of the page, open an issue on Github, or send us some feedback at OTel@microsoft.com.

The post Announcing Azure Monitor OpenTelemetry Distro appeared first on .NET Blog.



source https://devblogs.microsoft.com/dotnet/azure-monitor-opentelemetry-distro/

Full-Stack Course using Next.js, TypeScript, and AWS Course – Create a Quote Generator


Full course - Full-Stack Next.js, TypeScript, and AWS Course – Create a Quote Generator

Learn how to use Next.js, TypeScript, and AWS Amplify to build a full stack inspirational quote generator app. You'll learn to use the ZenQuotes' API for fetching quotes and then you'll deep into state management, hooks, debugging, NoSQL database modeling, and much more.

✏️ Course created by @BrianHHough 

✏️ Live Site: https://prod.d162tlmsvnhy1m.amplifyapp.com/

⭐️ Contents ⭐️
⌨️ (0:00:00) 📱 Intro + Demo of App
⌨️ (0:07:17) 📂 Set up your GitHub Repository
⌨️ (0:10:53) 💻 Create a new Next.js + Styled Components project 
⌨️ (0:26:37) 🅰️ Add Google Fonts to the App
⌨️ (0:30:22) 🎑 Create a Dynamic Background
⌨️ (0:53:02) 📑 Create a Footer for our Database Data
⌨️ (1:04:16) 🚪 Create a Pop-Up with Material-UI Modal + Hype4Academy Glassomorphism
⌨️ (1:23:26) 🖼️ Write a Node.js Script to Generate Images in CodeSandbox
⌨️ (1:36:23) 📡 Use Node.js' fetch Function to Call ZenQuotes' API to Generate Images
⌨️ (2:04:33) ⚙️ Use the AWS Amplify CLI to Initialize the Project 
⌨️ (2:12:01) 🔄 Configure the App to Communicate with AWS Amplify
⌨️ (2:16:31) 🌐 Create a GraphQL API with AWS AppSync
⌨️ (2:26:12) 🔒 Add Authentication with Amazon Cognito and IAM
⌨️ (2:30:08) 🌩️ Add an AWS Lambda function to the AWS services stack
⌨️ (2:32:08) ☁️ Deploy our initial AWS CloudFormation stack to the cloud
⌨️ (2:38:00) 🛡️ Add Auth Directives to the GraphQL API
⌨️ (2:41:09) 📝 Write NoSQL Data to Amazon DynamoDB
⌨️ (2:44:34) ⏰ Write a Node.js Script to Generate AWSDateTime in CodeSandbox
⌨️ (2:51:45) 🔎 Query Amazon DynamoDB Data with AWS AppSync
⌨️ (3:11:48) 💬 Create the Quote Generator Pop-Up Modal with useState Hooks
⌨️ (3:35:15) ⏳ Create Loading States for when the API calls AWS Lambda 
⌨️ (4:02:26) 🌠 Create a Button with a Lottie Image
⌨️ (4:11:21) 📥 Write a Function to Download Images to your Device
⌨️ (4:15:22) 🔁 Write a useEffect Hook with Buffer to Decode Base64 Image Strings
⌨️ (4:21:18) 🧪 Test a Mock API Response with a Base64 Encoded String
⌨️ (4:33:49) 🔄 Deploy the Node.js Script to AWS Lambda with Access to Amazon DynamoDB
⌨️ (5:05:45) 🧪 Test the AWS Lambda Function &amp; Debug with Amazon CloudWatch Logs
⌨️ (5:08:13) 🛠️ Modify Installation Script for Sharp to Work Inside of AWS Lambda
⌨️ (5:20:05) 📜 Write a Function to Retrieve Quotes via AWS Lambda, AWS AppSync, and IAM
⌨️ (5:39:18) 🖥️ Add App Hosting with a CI/CD Pipeline using AWS Amplify &amp; GitHub
⌨️ (5:52:47) 🐞 Debug the CI/CD Pipeline by Modifying the AWS Amplify Build Settings
⌨️ (6:02:47) 🚀 Celebrate the Final Build! 
⌨️ (6:04:44) 🎉 Project Wrap Up

🎉 Thanks to our Champion and Sponsor supporters:
👾 davthecoder
👾 jedi-or-sith
👾 南宮千影
👾 Agustín Kussrow
👾 Nattira Maneerat
👾 Heather Wcislo
👾 Serhiy Kalinets
👾 Justin Hual
👾 Otis Morgan

Watch Online Full Course: Full-Stack Next.js, TypeScript, and AWS Course – Code a Quote Generator


Click Here to watch on YouTube: Full-Stack Next.js, TypeScript, and AWS Course – Code a Quote Generator


This video is first published on youtube via freecodecamp. If Video does not appear here, you can watch this on Youtube always.


Udemy Full-Stack Next.js, TypeScript, and AWS Course – Code a Quote Generator courses free download, Pluralsight Full-Stack Next.js, TypeScript, and AWS Course – Code a Quote Generator courses free download, Linda Full-Stack Next.js, TypeScript, and AWS Course – Code a Quote Generator courses free download, Coursera Full-Stack Next.js, TypeScript, and AWS Course – Code a Quote Generator course download free, Brad Hussey Udemy course free, free programming full course download, full course with project files, Download full project free, College major project download, CS major project idea, EC major project idea, clone projects download free

Client Support for Calling WCF/CoreWCF with System.ServiceModel 6.0 Is Here!

System.ServiceModel.* are a set of NuGet packages that provide the client functionality for calling into WCF or CoreWCF services from .NET applications. These packages, collectively known as the WCF Client, are developed and supported by Microsoft, and open-sourced at https://github.com/dotnet/wcf

Windows Communication Services (WCF) is a service communication framework from Microsoft, that supports SOAP and the WS-* protocol specifications, and was originally released as part of .NET 3.0 in 2006.

.NET Core 3.1 & .NET 5, 6, 7 & 8 (currently in preview) do not include WCF server support in the base SDK. A separate community project, CoreWCF, provides a WCF-compatible server implementation, based on top of ASP.NET Core.

Packages in this release

This 6.0 release includes the following packages:

Name Description
System.ServiceModel.Primitives Provides the common types used by all of the WCF libraries
System.ServiceModel.Http Provides the types that permit SOAP messages to be exchanged using Http (example: BasicHttpBinding)
System.ServiceModel.NetTcp Provides the types that permit SOAP messages to be exchanged using TCP (example: NetTcpBinding)
System.ServiceModel.Federation Provides the types that allow security communications with SOAP messages using WS-Federation
System.ServiceModel.NetFramingBase Contain common types for NetFraming based transports such as NetTcp and NetNamedPipe
System.ServiceModel.NetNamedPipe Provides the types that permit SOAP messages to be exchanged using named pipes (example: NetNamedPipeBinding)
System.Web.Services.Description Contains classes that enable you to publicly describe an XML Web service by using the Web Services Description Language (WSDL)
System.ServiceModel.Security Deprecated. Provides the types that support additional security features
System.ServiceModel.Duplex Deprecated. Provides the types that permit 2-way (“duplex”) exchanges of messages

NetNamedPipe support has been added

Support for using named pipes is new to this release. It works for named pipes implemented by WCF and CoreWCF. NetNamedPipeBinding is a binding for enabling fast binary communication between processes on the same machine.

Named Pipes is a feature of the Windows OS, so is not available on Linux or other non-windows platforms. We are working on Unix Domain socket support in CoreWCF, which will bring equivalent functionality for Linux. WCF Client will be updated in coordination with the CoreWCF release when it is ready.

Dropping .NET Standard and older .NET support

This WCF Client 6.0 package drops support for .NET Standard 2.0, and is only targetting .NET 6.0 and above. The reason for this change is so that we can take advantage of newer functionality included in .NET 6, which is not available for .NET Framework. This change reduces the size and complexity that was required for implementing support for both .NET and .NET Framework.

Targeting .NET standard enabled the same package to be used from either .NET Framwork or .NET applications. Applications and libraries that need .NET Standard support, should either:

  • Continue to reference the version 4.x System.ServiceModel.* packages
  • Or use a conditional assembly reference to System.ServiceModel.dll for .NET Framework and use these nuget packages for .NET 6 and above.

Deprecating the System.ServiceModel.Duplex and System.ServiceModel.Security packages

These packages are no longer required as the types have been merged into the System.ServiceModel.Primitives package. This 6.0 version of System.ServiceModel.Duplex and System.ServiceModel.Security now just includes type forwarders to the implementations in the System.ServiceModel.Primitives package.

This will be the final release of these two packages, as the type forwarders will always point to the version of the Primitives package referenced by the application.

Versioning pattern

To make it easier to understand the versioning we will be following a new versioning pattern for this package where the library will be targetted against an LTS version of .NET, and will match the support lifecycle for that LTS release. This release is versioned as 6.0 as it targets the .NET 6 LTS.

Support will be based on a major.minor versioning scheme:

  • The major number will follow the same numbering as the .NET LTS versions, and will follow the same support lifecycle as the corresponding .NET LTS.
    • Eg WCF Client 6.x will be supported for the same duration as .NET 6
  • Breaking changes, and dependent runtime requirements will only be made as part of a new major version train.
    • For example the changes in this release to only support .NET 6 and above were only possible because of the major version change. No futher runtime dependency changes will be made as part of the 6.x version train.
  • There may be multiple minor releases under each major number, eg 6.0, 6.1, 6.2 etc.
    • Minor releases with the same major version will be API and behavior compatible with the previous minor releases.
    • When new minor versions are released, support for the previous minor release(s) will be for six months after their replacement date.
  • Support will be primarily for the latest major.minor release of each supported major version.
    • When WCF Client 8.0 ships, support periods will overlap for both 6.x and 8.0. WCF Client 6.x support will continue thru Nov 2024, the same as .NET 6.
  • Security fixes will be released for all supported versions.
    • During the six months overlap period of a previous release and new minor release, any security fix release will include both versions.

The post Client Support for Calling WCF/CoreWCF with System.ServiceModel 6.0 Is Here! appeared first on .NET Blog.



source https://devblogs.microsoft.com/dotnet/wcf-client-60-has-been-released/

Hot Reload Supports Modifying Generics!

Hot Reload is a powerful .NET feature that lets you edit your code while your app is running, and implements those changes without completely rebuilding your app. Hot Reload supports many of the common edits .NET developers make, but we always look at adding new capabilities with each new .NET version. After making a change to your code, the compiler analyzes the edit to see if the runtime supports it. If the change is unsupported, the compiler or Visual Studio tells you that your app needs to be restarted for the change to take effect – we call this a “Rude Edit”. Decreasing the amount of Rude Edits is one of the ways we make Hot Reload more versatile for all our .NET developers – which is why we’re excited to announce that in .NET 8, Hot Reload supports modifying Generics!

Supported Generic Scenarios

The supported generic scenarios for Hot Reload are:

  • Add new (static, instance) method to a (non)generic type.
  • Add new (static, instance) generic method to a (non)generic type.
  • Edit existing (static, instance) method on a (non)generic type.
  • Edit existing (static, instance) generic method on a (non)generic type.

To test out these features yourself, you can download the latest Visual Studio 17.7 preview or the latest .NET 8 preview. Find out what else is coming for developers in Announcing .NET 8 Preview 4 and other posts on the .NET blog. (add links) Hot Reload is available for use anywhere you use .NET.

Example 1 – Add new static generic method to a non-generic type

Adding a generic method to a non-generic type is supported in Hot Reload as of .NET 8.

using System;
public class AddGenericMethod1
{
    //The edit is removing the comment below
    //static void Foo<T>()
    //{
    //   Console.WriteLine(1);
    //}

    public static void Main()
    {
        Foo<int>();
        Console.WriteLine(2);
    }
}

Example 2 – Add new instance generic method to generic type

This could be in a running console app. A new generic method is added to type G by removing the commented code. Hot Reload can now integrate the new method into the console app without completely reloading it.

using System;
public class AddGenericMethodOnGenericType
{
    class G<T>
    {
        public static string AsString<U>(U u)
        {
            var s = u.ToString();
            Console.WriteLine(s);
            return s;
        }
        // The edit is removing the two comment groups below
        // Comment group 1
        // public string AsString2<U>(U u)
        // {
        //     var s = u.ToString();
        //     Console.WriteLine(""-"");
        //     return s;
        // }
    }
    public static void Main()
    {
        G<string>.AsString<int>(1);
        G<int>.AsString<string>(""2"");
        // Comment group 2
        // G<string>.AsString2<int>(1);
        // G<int>.AsString2<string>(""2"");
        Console.WriteLine(3);
    }
}

Example 3 – Real World Example

This is an example of editing an existing static generic method.

The following issue was filed in GitHub: Blazor Hot Reload generic. Start by creating a Blazor webpage. A webpage that has First Name, Email, Password and Verify Password lines. You can see that there are four lines on the webpage: first name, email, password and verify password. This code, <MudTextField Label="First name" HelperText="Max. 8 characters" @bind-Value="model.Username" For="@(() => model.Username)"/>, creates the First Name line with the helper text underneath that says Max 8 characters. Before generics were supported in .NET 8, if you removed the code and then used Hot Reload to attempt to refresh the webpage, an error would tell you to restart the entire webpage for the change to take effect. A message saying the app needs to restart for changes to take effect with code behind it. We call this error a “Rude Edit”. The Rude Edit happened because behind the scenes, some code changes in Blazor result in changes to generated generic methods. A picture showing generic code was modified Now that Hot Reload supports modifying generics in .NET 8, you can remove the same code, use Hot Reload to refresh your app, by pressing the Hot Reload icon, Visual Studio with the Hot Reload fire icon highlighted. and the updates are seen right away. A webpage that has only Email, Password and Verify Password lines. There are now only three lines on the webpage: email, password and verify password.

Want More?

Try this feature out today using .NET 8 preview 4 and Visual Studio preview 17.7 and let us know what other Rude Edits you want us to tackle via Help > Send Feedback > Suggest a Feature in Visual Studio, or on our GitHub!

The post Hot Reload Supports Modifying Generics! appeared first on .NET Blog.



source https://devblogs.microsoft.com/dotnet/hot-reload-generics/

Use ChatGPT to Code a Full Stack App – Full Course


Curriculum for the course Use ChatGPT to Code a Full Stack App – Full Course

Learn how to use ChatGPT for full stack development! In this course, you'll learn how to leverage the power of ChatGPT to accelerate your development process and make programming smoother. Judy will show you how to build an educational application, using ChatGPT to ask questions about coding syntax, troubleshooting, and learning best practices. ✏️ Created by @webdecoded 💻 Final code: https://github.com/judygab/course-app 🔗 Full stack template: webdecoded.gumroad.com/l/full-stack ⭐️ Contents ⭐️ ⌨️ (0:00:00) Intro ⌨️ (0:02:57) App Architecture ⌨️ (0:05:31) Picking the Database ⌨️ (0:09:31) Setting up the project ⌨️ (0:12:40) Connecting to the Database ⌨️ (0:18:17) Creating Tables ⌨️ (0:19:20) Seeding Database ⌨️ (0:21:18) Displaying Courses ⌨️ (0:31:13) Setting Up Authentication ⌨️ (0:46:50) Adding Header ⌨️ (0:54:09) Search Bar ⌨️ (1:06:53) Course Categories ⌨️ (1:29:44) User Profiles ⌨️ (1:43:46) Enroll in Course Functionality ⌨️ (1:51:23) Displaying Saved Courses ⌨️ (2:14:23) Other ChatGPT Use Cases 🎉 Thanks to our Champion and Sponsor supporters: 👾 davthecoder 👾 jedi-or-sith 👾 南宮千影 👾 Agustín Kussrow 👾 Nattira Maneerat 👾 Heather Wcislo 👾 Serhiy Kalinets 👾 Justin Hual 👾 Otis Morgan -- Learn to code for free and get a developer job: https://www.freecodecamp.org Read hundreds of articles on programming: https://freecodecamp.org/news

Watch Online Full Course: Use ChatGPT to Code a Full Stack App – Full Course


Click Here to watch on Youtube: Use ChatGPT to Code a Full Stack App – Full Course


This video is first published on youtube via freecodecamp. If Video does not appear here, you can watch this on Youtube always.


Udemy Use ChatGPT to Code a Full Stack App – Full Course courses free download, Plurasight Use ChatGPT to Code a Full Stack App – Full Course courses free download, Linda Use ChatGPT to Code a Full Stack App – Full Course courses free download, Coursera Use ChatGPT to Code a Full Stack App – Full Course course download free, Brad Hussey udemy course free, free programming full course download, full course with project files, Download full project free, College major project download, CS major project idea, EC major project idea, clone projects download free

EF Core 8 Preview 4: Primitive collections and improved Contains

The fourth preview of Entity Framework Core (EF Core) 8 is available on NuGet today!

Basic information

EF Core 8, or just EF8, is the successor to EF Core 7, and is scheduled for release in November 2023, at the same time as .NET 8.

EF8 previews currently target .NET 6, and can therefore be used with either .NET 6 (LTS) or .NET 7. This will likely be updated to .NET 8 as we near release.

EF8 will align with .NET 8 as a long-term support (LTS) release. See the .NET support policy for more information.

New in EF8 Preview 4

The fourth preview version of EF Core 8.0 preview4 includes some exciting new capabilities in query translation, as well as an important performance optimization. Let’s dive in!

Translating LINQ Contains with an inline collection

In EF’s quest to translate more and more LINQ queries to SQL, we sometimes encounter odd and problematic corner cases. Let’s examine such a case, which also happens to be related to a highly-voted EF performance issue. Starting from something simple, imagine you have a bunch of Blogs, and want to query out two Blogs whose names you know. You could use the following LINQ query to do so:

var blogs = await context.Blogs
    .Where(b => new[] { "Blog1", "Blog2" }.Contains(b.Name))
    .ToArrayAsync();

This would cause the followed SQL query to be generated on SQL Server:

SELECT [b].[Id], [b].[Name]
FROM [Blogs] AS [b]
WHERE [b].[Name] IN (N'Blog1', N'Blog2')

Looks great! The LINQ Contains operator has a matching SQL construct – the IN expression – which provides us with a perfect translation. However, the names in this query are embedded as constants into the LINQ query – and therefore also into the SQL query, via what I’ll refer to as an inline collection (that’s the new[] { ... } part): the collection is specified within the query itself, in line. In many cases, we can’t do that: the Blog names are sometimes available only as a variable, since we read them from some other source, possibly even from another EF LINQ query.

Translating LINQ Contains with a parameter collection

So what happens when we try to do the same, but embedding a variable within the query instead of an inline collection?

var names = new[] { "Blog1", "Blog2" };

var blogs = await context.Blogs
    .Where(b => names.Contains(b.Name))
    .ToArrayAsync();

When a variable such as names is embedded in a query, EF usually sends it as-is via a database parameter. This works well in most cases, but for this particular case, databases simply don’t support using the IN expression with a parameter. In other words, the following isn’t valid SQL:

SELECT [b].[Id], [b].[Name]
FROM [Blogs] AS [b]
WHERE [b].[Name] IN @names

More broadly, relational databases don’t really have the concept of a “list” or of a “collection”; they generally work with logically unordered, structured sets such as tables. SQL Server does allow sending table-valued parameters, but that involves various complications which make this an inappropriate solution (e.g. the table type must be defined in advanced before querying, with its specific structure).

The one exception to this is PostgreSQL, which fully supports the concept of arrays: you can have an int array column in a table, query into it, and send an array as a parameter, just like you can with any other database type. This allows the EF PostgreSQL provider to perform the following translation:

Executed DbCommand (10ms) [Parameters=[@__names_0={ 'Blog1', 'Blog2' } (DbType = Object)], CommandType='Text', CommandTimeout='30']

SELECT b."Id", b."Name"
FROM "Blogs" AS b
WHERE b."Name" = ANY (@__names_0)

This is very similar to the inline collection translation above with IN, but uses the PostgreSQL-specific ANY construct, which can accept an array type. Leveraging this, we pass the array of blog names as a SQL parameter directly to ANY – that’s @__names_0 – and get the perfect translation. But what can we do for other databases, where this does not exist?

Up to now, all versions of EF have provided the following translation:

SELECT [b].[Id], [b].[Name]
FROM [Blogs] AS [b]
WHERE [b].[Name] IN (N'Blog1', N'Blog2')

But wait, this looks suspiciously familiar – it’s the inline collection translation we saw above! And indeed, since we couldn’t parameterize the array, we simply embedded its values – as constants – into the SQL query. While .NET variables in EF LINQ queries usually become SQL parameters, in this particular case the variable has disappeared, and its contents have been inserted directly into the SQL.

This has the unfortunate consequence that the SQL produced by EF varies for different array contents – a pretty abnormal situation! Usually, when you run the same LINQ query over and over again – changing only parameter values – EF sends the exact same SQL to the database. This is vital for good performance: SQL Server caches SQL, performing expensive query planning only the first time a particular SQL is seen (a similar SQL cache is implemented in the database driver for PostgreSQL). In addition, EF itself has an internal SQL cache for its queries, and this SQL variance makes caching impossible, leading to further EF overhead for each and every query.

But crucially, the negative performance impact of constantly varying SQLs goes beyond this particular query. SQL Server (and Npgsql) can only cache a certain number of SQLs; at some point, they have to get rid of old entries to avoid using too much memory. If you frequently use Contains with a variable array, each individual invocation causees valuable cache entries to be taken at the database, for SQLs that will most probably never be used (since they have the specific array values baked in). That means you’re also evicting cache entries for other, important SQLs that will need to be used, and requiring them to be re-planned again and again.

In short – not great! In fact, this performance issue is the second most highly-voted issue in the EF Core repo; and as with most performance problems, your application may be suffering from it without you knowing about it. We clearly need a better solution for translating the LINQ Contains operator when the collection is a parameter.

Using OpenJson to translate parameter collections

Let’s see what SQL preview4 generates for this LINQ query:

Executed DbCommand (49ms) [Parameters=[@__names_0='["Blog1","Blog2"]' (Size = 4000)], CommandType='Text', CommandTimeout='30']

SELECT [b].[Id], [b].[Name]
FROM [Blogs] AS [b]
WHERE EXISTS (
    SELECT 1
    FROM OpenJson(@__names_0) AS [n]
    WHERE [n].[value] = [b].[Name])

This SQL is a completely different beast indeed; but even without understanding exactly what’s going on, we can already see that the blog names are passed as a parameter, represented via @__names_0 in the SQL – similar to our PostgreSQL translation above. So how does this work?

Modern databases have built-in support for JSON; although the specifics vary from database to database, all support some basic forms of parsing and querying JSON directly in SQL. One of SQL Server’s JSON capabilities is the OpenJson function: this is a “table-valued function” which accepts a JSON document, and returns a standard, relational rowset from its contents. For example, the following SQL query:

SELECT * FROM OpenJson('["one", "two", "three"]');

Returns the following rowset:

[key] value type
0 one 1
1 two 1
2 three 2

The input JSON array has effectively been transformed into a relational “table”, which can then be queried with the usual SQL operators. EF makes use of this to solve the “parameter collection” problem:

  1. We convert your .NET array variable into a JSON array…
  2. We send that JSON array as a simple SQL nvarchar parameter…
  3. We use the OpenJson function to unpack the parameter…
  4. And we use an EXISTS subquery to check if any of the elements match the Blog’s name.

This achieves our goal of having a single, non-varying SQL for different values in the .NET array, and resolves the SQL caching problem. Importantly, when viewed on its own, this new translation may actually run a bit slower than the previous one – SQL Server can sometimes execute the previous IN translation more efficiently than it can the new translation; when exactly this happens depends on the number of elements in the array. But the crucial bit is that no matter how fast this particular query runs, it no longer causes other queries to be evicted from the SQL cache, negatively affecting your application as a whole.

[!NOTE] We are looking into further optimizations for the OpenJson-based translation above – the preview4 implementation is just the first version of this feature. Stay tuned for further performance improvements in this area.

Older versions of SQL Server

The OpenJson function was introduced in SQL Server 2016 (13.x); while that’s quite an old version, it’s still supported, and we don’t want to break its users by relying on it. Therefore, we’ve introduced a general way for you to tell EF which SQL Server is being targeted – this will allow us to take advantage of newer features while preserving backwards compatibility for users on older versions. To do this, simply call the new [UseCompatibilityLevel] method when configuring your context options:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    => optionsBuilder
        .UseSqlServer(@"<CONNECTION STRING>", o => o.UseCompatibilityLevel(120));

The 120 argument is the desired SQL Server compatibility level; 120 corresponds to SQL Server 2014 (12.x). When this is done, EF will generate the previous translation, embedding the array’s contents into an IN expression.

Queryable primitive collection columns

I could stop here, and we’d already have a nice feature, resolving a long-standing performance issue. But let’s go further! The solution to Contains above supports representing a primitive collection as a JSON array, and then using that collection like any other table in the query. The above translation of Contains is just a very specific case of that – but we can do much, much more.

Let’s say that each Blog is also associated to a collection of Tags. In classical relational modeling, we’d represent this as a many-to-many relationship between a Blogs table and a Tags table, using a BlogTags join table to link the two together; and EF Core supports this mapping very well (see docs). But this traditional modeling can be a bit heavy, requiring two additional tables and JOINs, and a .NET type to wrap your simple string Tag. Let’s try to look at this from a different angle.

Since EF now supports primitive collections, we can simply add a string array property to our Blog type:

public class Blog
{
    public int Id { get; set; }
    // ...
    public string[] Tags { get; set; }
}

This causes EF to generate the following table:

CREATE TABLE [Blogs] (
    [Id] int NOT NULL IDENTITY,
    -- ...
    [Tags] nvarchar(max) NULL,
);

Our new Tags properties is now mapped to a single nvarchar(max) property in the database. You can now add a Blog with some tags:

context.Blogs.Add(new Blog { Name = "Blog1", Tags = new[] { "Tag1", "Tag2" } });
await context.SaveChangesAsync();

… and EF will automatically encode your Tags .NET array as a JSON array string in the database:

Executed DbCommand (47ms) [Parameters=[@p0='foo' (Nullable = false) (Size = 4000), @p1='["Tag1","Tag2"]' (Size = 4000)], CommandType='Text', CommandTimeout='30']

INSERT INTO [Blogs] ([Name], [Tags])
OUTPUT INSERTED.[Id]
VALUES (@p0, @p1);

Similarly, when reading a Blog from the database, EF will automatically decode the JSON array and populate your .NET array property. That’s all pretty nifty – but people have been doing this for quite some time by defining a value converter on their array properties. In fact, our value converter documentation has an example showing exactly this. So what’s the big deal?

Just as we used a SQL EXISTS subquery to translate the LINQ Contains operator, EF now allows you to use arbitrary LINQ operators over such primitive collection columns – just as if they were regular DbSets; in other words, primitive collections are now fully queryable. For example, to find all Blogs which have a certain Tag, you can now use the following LINQ query:

var blogs = await context.Blogs
    .Where(b => b.Tags.Contains("Tag1"))
    .ToArrayAsync();

… which EF translates to the following:

SELECT [b].[Id], [b].[Name], [b].[Tags]
FROM [Blogs] AS [b]
WHERE EXISTS (
    SELECT 1
    FROM OpenJson([b].[Tags]) AS [t]
    WHERE [t].[value] = N'Tag1')

That’s the exact same SQL we saw above for a parameter – but applied to a column! But let’s do something fancier: what if, instead of querying for all Blogs which have a certain Tag, we want to query for Blogs which have multiple Tags? This can now be done with the following LINQ query:

var tags = new[] { "Tag1", "Tag2" };

var blogs = await context.Blogs
    .Where(b => b.Tags.Intersect(tags).Count() >= tags.Length)
    .ToArrayAsync();

This leverages more sophisticated LINQ operators: we intersect each Blog’s Tags with a parameter collection, and query out the Blogs where there are at least two matches. This translates to the following:

Executed DbCommand (48ms) [Parameters=[@__tags_0='["Tag1","Tag2"]' (Size = 4000)], CommandType='Text', CommandTimeout='30']

SELECT [b].[Id], [b].[Name], [b].[Tags]
FROM [Blogs] AS [b]
WHERE (
    SELECT COUNT(*)
    FROM (
        SELECT [t].[value]
        FROM OpenJson([b].[Tags]) AS [t] -- column collection
        INTERSECT
        SELECT [t1].[value]
        FROM OpenJson(@__tags_0) AS [t1] -- parameter collection
    ) AS [t0]) >= 2

That’s quite a mouthful – but we’re using the same basic mechanisms: we perform an intersection between the column primitive collection ([b].[Tags]) and the parameter primitive collection (@__tags_0), using OpenJson to unpack the JSON array strings into rowsets.

Let’s look at one last example. Since we encode primitive collections as JSON arrays, these collections are naturally ordered. This is an atypical situation within relationl databases – relational sets are always logically unordered, and an ORDER BY clause must be used in order to get any deterministic ordering.

Now, a list of Tags is typically an unordered bag: we don’t care which Tag comes first. But let’s assume, for the sake of this example, that your Blogs’ Tags are ordered, with more “important” Tags coming first. In such a situation, it may make sense to query all Blogs with a certain value as their first Tag:

var blogs = await context.Blogs
    .Where(b => b.Tags[0] == "Tag1")
    .ToArrayAsync();

This currently generates the following SQL:

SELECT [b].[Id], [b].[Name], [b].[Tags]
FROM [Blogs] AS [b]
WHERE (
    SELECT [t].[value]
    FROM OpenJson([b].[Tags]) AS [t]
    ORDER BY CAST([t].[key] AS int)
    OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY) = N'Tag1'

EF generates an ORDER BY clause to make sure that the JSON array’s natural ordering is preserved, and then uses limits to get the first element. This over-elaborate SQL has already been improved, and later previews will generate the following tighter SQL instead:

SELECT [b].[Id], [b].[Name], [b].[Tags]
FROM [Blogs] AS [b]
WHERE JSON_VALUE([b].[Tags], '$[0]') = N'Tag1'

To summarize, you can now use the full range of LINQ operators on primitive collections – whether they’re a column or a parameter. This opens up exciting translation possibilities for queries which were never translatable before; we’re looking forward to seeing the kind of queries you’ll use with this!

[!NOTE] Before using JSON-based primitive collections, carefully consider indexing and query performance. Most database allow indexing at least some forms of querying into JSON documents; but arbitrary, complex queries such as the intersect above would likely not be able to use an index. In some cases, traditional relational modeling (e.g. many-to-many) may be more appropriate.

[!NOTE] We mentioned above that PostgreSQL has native support for arrays, so there’s no need to resort to JSON array encoding when dealing with primitive collections there. Instead, primitive array collections are (by default) mapped to arrays, and the PostgreSQL unnest function is used to expand the native array to a rowset.

And one last thing: queryable inline collections

We discussed columns and parameters containing primitive collections, but we left out one last type – inline collections. You may remember that we started this post with the following LINQ query:

var blogs = await context.Blogs
    .Where(b => new[] { "Blog1", "Blog2" }.Contains(b.Name))
    .ToArrayAsync();

The new[] { ... } bit in the query represents an inline collection. Up to now, EF supported these only in some very restricted scenarios, such as with the Contains operator. Preview 4 now brings full support for queryable inline collections, allowing you to use the full range of LINQ operators on them as well.

As an example query, let’s challenge ourselves and do something a bit more complicated. The following query searches for Blogs which have at least one Tag that starts with either a or b:

var blogs = await context.Blogs
    .Where(b => new[] { "a%", "b%" }
        .Any(pattern => b.Tags.Any(tag => EF.Functions.Like(tag, pattern))))
    .ToArrayAsync();

Note that the inline collection of patterns – new[] { "a%", "b%" } – is composed over with the Any operator. This now translates to the following SQL:

SELECT [b].[Id], [b].[Name], [b].[Tags]
FROM [Blogs] AS [b]
WHERE EXISTS (
    SELECT 1
    FROM (VALUES (CAST(N'a%' AS nvarchar(max))), (N'b%')) AS [v]([Value]) -- inline collection
    WHERE EXISTS (
        SELECT 1
        FROM OpenJson([b].[Tags]) AS [t] -- column collection
        WHERE [t].[value] LIKE [v].[Value]))

The interesting bit is the “inline collection” line. Unlike with parameter and column collections, we don’t need to resort to JSON arrays and OpenJson: SQL already has a universal mechanism for specifying inline tables via the VALUES expression. This completes the picture – EF now supports querying into any kind of primitive collection, be it a column, a parameter or an inline collection.

What’s supported and what’s not

The fourth preview brings primitive collection support for SQL Server and SQLite; the PostgreSQL provider will also be updated to support them. However, as indicated above, this is the first wave of work on primitive collections – expect further improvements in coming versions. Specifically:

  • Primitive collections inside owned JSON entities aren’t supported yet.
  • Certain primitive data types aren’t yet supported on certain providers; this is the case with spatial types, for example.
  • We may optimize the SQL around OpenJSON to make querying more efficient.

How to get EF8 Preview 4

EF8 is distributed exclusively as a set of NuGet packages. For example, to add the SQL Server provider to your project, you can use the following command using the dotnet tool:

dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version <VERSION>

Installing the EF8 Command Line Interface (CLI)

The dotnet-ef tool must be installed before executing EF8 Core migration or scaffolding commands.

To install the tool globally, use:

dotnet tool install --global dotnet-ef --version <VERSION>

If you already have the tool installed, you can upgrade it with the following command:

dotnet tool update --global dotnet-ef --version <VERSION>

The .NET Data Community Standup

The .NET data access team is now live streaming every other Wednesday at 10am Pacific Time, 1pm Eastern Time, or 18:00 UTC. Join the stream learn and ask questions about many .NET Data related topics.

Documentation and Feedback

The starting point for all EF Core documentation is docs.microsoft.com/ef/. Please file issues found and any other feedback on the dotnet/efcore GitHub repo.

The following links are provided for easy reference and access.

The post EF Core 8 Preview 4: Primitive collections and improved Contains appeared first on .NET Blog.



source https://devblogs.microsoft.com/dotnet/announcing-ef8-preview-4/

Upcoming availability of .NET Framework 4.8.1 on Windows Update and Catalog

We are excited to announce that in the coming weeks the .NET Framework 4.8.1 product will become available broadly on Windows Update (WU) and Microsoft Update Catalog for supported versions of Windows. The .NET Framework 4.8.1 product will first roll out to customers participating in the Windows Insider program through the Release Preview channel, then gradually to customers seeking the latest content on WU, and finally as Recommended to customers through Windows Update.

.NET Framework 4.8.1 will be available for the following versions of Windows and distribution channels:

  • Windows Update: Windows 11 21H2, Windows 10 21H2 (LTSC), and Windows 10 22H2
  • Microsoft Update Catalog: Windows 11 21H2, Windows 10 21H2 (LTSC), Windows 10 22H2 and Windows Server 2022 (Desktop, Azure Editions), Azure Stack 21H2 and Azure Stack 22H2.

Note: Customers using Windows Server Updates Services (WSUS) or any other update management tools will be able to import the .NET Framework 4.8.1 product from the Microsoft Update Catalog.  Also note that .NET Framework 4.8.1 is already included by default in newer versions of Windows, starting with Windows 11 22H2.

 

What is new in .NET Framework 4.8.1?

For more information about what is new in the .NET Framework 4.8.1 product, you can read our previous announcement here: Announcing .NET Framework 4.8.1 – .NET Blog (microsoft.com). The NET Framework 4.8.1 product installers will also be updated to include all the latest security and quality fixes since the .NET Framework 4.8.1 initial release. 

 

How can I get .NET Framework 4.8.1?

The .NET Framework 4.8.1 is available for download from: Download .NET Framework | Free official downloads (microsoft.com) for supported versions of Windows and is also included with Visual Studio 17.3 and Windows 11 22H2, and their corresponding newer versions.

Very soon, .NET Framework 4.8.1 will also be available on Windows Update and Microsoft Update Catalog as follows:

  • Windows Insider program participants that have registered their device into the Release Preview channel will be the first to receive the latest .NET Framework 4.8.1 product release as Recommended.
  • Shortly after, Windows Update Seekers will be able to install the .NET Framework 4.8.1 by checking for the latest updates (Start > Settings > Windows Update > Check for Updates). We will gradually throttle availability to devices connected to Windows Update.
  • Finally, supported versions of Windows client will receive the .NET Framework 4.8.1 as a Recommended update on Windows Update.
  • IT administrators will also be able to download the .NET Framework 4.8.1 directly or import into WSUS from the Microsoft Update Catalog.

 

More Information

Language Packs

The .NET Framework 4.8.1 Language Packs will also be available on Windows Update and Microsoft Update Catalog for customers using non-English localized versions of Windows or those that have one or more Multilingual User Interface (MUI) pack installed.

Blocking the automatic deployment of .NET Framework 4.8.1

Enterprise customers may have client machines that connect directly to the public Windows Update servers. In such cases, an administrator may want to prevent the .NET Framework 4.8.1 from being deployed to these client machines to allow testing of internal applications to be completed before deployment.

In such scenarios, administrators can deploy a registry key setting and prevent the .NET Framework 4.8.1 from being offered to those devices. More information about how to use this blocker registry key can be found in the following Microsoft Knowledge Base article KB5027101: How to temporarily block the installation of the .NET Framework 4.8.1.

 

FAQ

I have already installed the .NET Framework 4.8.1. Do I still need the upcoming update?

If you have already downloaded and installed the .NET Framework 4.8.1 originally released, you do not need to install the upcoming product update for .NET Framework 4.8.1. However, you do want to keep your device up to date for the latest .NET Framework security and reliability updates through the Windows Update, Windows Server Update Services (WSUS) and Microsoft Update Catalog channels.

Will the updated .NET Framework 4.8.1 have the same KB numbers, title, and detection Release key values as the product originally released to Microsoft Download Center and Visual Studio 17.3+? 

Yes.

Do I need to import the .NET Framework 4.8.1 to my organization’s devices through WSUS?

No, unless your organization requires newer applications that target .NET Framework 4.8.1. For more information about what is new in .NET Framework 4.8.1, see: What’s new in .NET Framework – .NET Framework | Microsoft Learn.

Should my app target .NET Framework 4.8.1? 

Each new .NET Framework product release introduces new features and capabilities. However, application developers do not necessarily need to target the highest version of .NET Framework unless they want to use specific new functionality (refer to What’s new in .NET Framework – .NET Framework | Microsoft Learn). When targeting .NET Framework 4.8.1, the application will not be able to run on Windows versions prior to Windows 10 version 21H2 and Server 2022. For more information on where 4.8.1 is supported, see the .NET Framework support lifecycle. For more information on patterns for developing and deploying native-arm64-capable applications see Tour of .NET Behavior on Windows 11 Arm64 · Issue #7709 · dotnet/core · GitHub. For information on patterns for developing accessible apps that take advantage of the latest .NET Framework support for accessible applications, see What’s new in accessibility in .NET Framework | Microsoft Learn.

 

What is the general .NET Framework targeting recommendation?

For existing apps, there is no need to make a change in targeting version. For new apps, in general, we currently recommend targeting .NET Framework 4.8, as noted here, unless your application must run on Windows Server 2008 SP2 or Windows version 1507 (where it is unsupported), or unless your application requires newer features only available in .NET 4.8.1 (see considerations in the question above). For more information about features and improvements across .NET Framework releases, refer to What’s new in .NET Framework – .NET Framework | Microsoft Learn

The post Upcoming availability of .NET Framework 4.8.1 on Windows Update and Catalog appeared first on .NET Blog.



source https://devblogs.microsoft.com/dotnet/upcoming-availability-of-net-framework-4-8-1-on-windows-update-and-catalog/

Share this post

Search This Blog

What's New

The "AI is going to replace devs" hype is over – 22-year dev veteran Jason Lengstorf [Podcast #201]

Image
Curriculum for the course The "AI is going to replace devs" hype is over – 22-year dev veteran Jason Lengstorf [Podcast #201] Today Quincy Larson interviews Jason Lengstorf. He's a college dropout who taught himself programming while building websites for his emo band. 22 years later he's worked as a developer at IBM, Netlify, run his own dev consultancy, and he now runs CodeTV making reality TV shows for developers. We talk about: - How many CEOs over-estimated the impact of AI coding tools and laid off too many devs, whom they're now trying to rehire - Why the developer job market has already rebounded a bit, but will never be the same - Tips for how to land roles in the post-LLM résumé spam job search era - How devs are working to rebuild the fabric of the community through in-person community events Support for this podcast is provided by a grant from AlgoMonster. AlgoMonster is a platform that teaches data structure and algorithm patterns in a structure...

Labels

Programming Video Tutorials Coursera Video Tutorials Plurasight Programming Tutorials Udemy Tutorial C# Microsoft .Net Dot Net Udemy Tutorial, Plurasight Programming Tutorials, Coursera Video Tutorials, Programming Video Tutorials Asp.Net Core Asp.Net Programming AWS Azure GCP How To WordPress Migration C sharp AWS Project Git Commands FREE AWS Tutorial OldNewThings Git Tutorial Azure vs AWS vs GCP New in .Net javascript AI Google I/O 2025 Wordpress jquery Generative Video Git Git Squash Google Flow AI PHP SQL Veo 3 squash commit CSS Cloud Services React Tutorial With Live Project Source Code git rebase CPR Nummer Dropdown Reset Javascript Figma Figma Beginner Tutorial Geolocation Non-Programmer Content Python Free Course Think Simply Awesome Tutorial UI UX Live Project UI/UX Full Course Wireframing dotnet core runtime error html API Gateway AWS EKS vs Azure AKS All in one WP stuck C++ C++ Coroutines CPR Denmark ChatGPT Cloud Database Cloud DevOps Cloud Security Cloud Storage Contact Form 7 Dropdown Unselect Javascript E commerce Free AWS Terraform Project Training Git Commit Google Drive Files Google Drive Tips Http Error 500.30 Http Error 500.31 Interview Questions Learn Courutines C++ Microservices for Live Streaming PII Denmark Pub Sub SQL Server SSIS Terraform Course Free Terraform Tutorial Free USA E commerce strategies UpdraftPlus UpdraftPlus Manual Restore Website Optimization Strategies dropdown javascript select drop down javascript smarttube apk error 403 smarttube next 403 Error 413 Error 503 504 524 AI & ML AI Assistants AI Course CS50 AI in daily life AWS API Gateway AWS EBS AWS EC2 vs Azure VMs vs GCP Compute Engine AWS EFS AWS IAM AWS Lamda AWS RDS vs Azure SQL AWS Redshift AWS S3 AZ-104 AZ-104 Free Course AZ-104 Full Course AZ-104 Pass the exam Abstract Class C# Abstract Method Ajax Calender Control Ajax Control Toolkit All In One Extension Compatibility All In One WP Freeze All In One WP Migration All in one WP All-in-One WP Migration Android 15 Android TV Applying Theme html Asp.net core runtime Error Audio Auto Complete Azure AD Azure APIM Azure Administrator Certification Azure Blob Storage Azure Data Lake Azure Files Azure Function Azure Managed Disk Azure Synapse Base Class Child Class Best Grocery Price Big Data BigBasket vs Grofers Bing Homepage Quiz Blogger Import Blogger Post Import Blogger XML Import Bluetooth Connectivity Browser Detail Building Real-Time Web Applications Bulk Insert CI/CD CPR Address Update CPR Generator CPR Generator Denmark CS50 AI Course CS50 AI Python Course CS50 Artificial Intelligence Full Course CVR Centrale Virksomhedsregister Change Workspace TFS ChatGPT Essay Guide ChatGPT Usage ChatGPT vs Humans Cloud API Management Cloud CDN Cloud Computing Cloud Data Warehouse Cloud Event Streaming Cloud IAM Cloud Messaging Queue Cloud Monitoring and Logging Cloud Networking CloudFront Cloudflare Cloudwatch Compute Services Connect a Bluetooth Device to my PC site:microsoft.com Containers ControlService FAILED 1062 Corona Lockdown MP CosmosDB Covid19 Covid19 Bhopal Covid19 Home Delivery MP Covid19 Indore Covid19 Susner Covid19 Ujjain Cypress Javascript Cypress Javascript framework Cypress Javascript testing Cypress Javascript tutorial Cypress Javascript vs typescript DNS Danish CVR Data Analytics Data Analytics Course Free Data Engineering Data Structure Full Course Data Visualization Database Database Diagram Visualizer Davek Na Dodano Vrednost Dbdiagram export seeder Deep Learning Course Denmark Numbers Det Centrale Personregister Det Centrale Virksomhedsregister DevOps Device Compatibility Dictionary Dictionary in C# Digital Economy Disaster Recovery for Web Applications Disaster-Proof Infrastructure Dmart Frenchise Dmart Home Delibery Dmart Mumbai Address Dmart Pickup Points Doodle Jump Drive Images On Blog Drive Images On Website Driver Problems DropDown Dropbox Dropdown jquery DynamoDB ETL ETL Package Ecommerce Store using AWS & React Embed Drive Images Escape Sequences in c#.Net Event Hub Explicit Join Extract Facebook App Fake CVR Denmark Fake DDV Slovenia Fake VAT Number Fake Virk Number Faker Feature Toggle Find CPR Information Find a Word on Website Firestore Flappy Bird Game Form Selectors using jQuery Free React Portfolio Template FreeCodeCamp Frontend Best Practices for Millions of Users Full Text Index View G Drive Hosting GAN certification course GCP Cloud Data Lake GCP Filestore GCP Functions GCP IAM GCP Persistent Disk Gemini Git Checkout Google Adsense Setting Google Beam Google BigQuery Google Conversion Tracking Google Docs Advanced Tutorial Google Drive Clone Google Drive Clone Bot Google Drive Clone HTML CSS Google Drive Clone PHP Google Drive Clone React Google Drive Clone Tutorial Google Drive Clone VueJS Google Drive File Sharing Google Drive Images Google Drive Sharing Permissions Grocery Price Compare Online Grocery in Corona Grocery in Covid19 Grofers vs DMart vs Big basket HAXM installation HTML Storage HTML to PDF Javascript HTML2Canvas HTML5 HTML5 Append Data HTML5 Audio HTML5 Data Storage HTML5 Storage HTML5 Video Harvard University AI Course Header Sent Height Jquery High Availability in Live Streaming Platforms High-Concurrency Frontend Design High-Concurrency Web Applications How to Search for a Word on Mac Html2Canvas Black Background issue Http Error 413 Http Error 500.35 IIS INNER Join Image Gallery Blogger Image Gallery Blogger Picasa Image Gallery Blogger Template Image Gallery Blogger Template Free Implicit Join Indexing in SQL Instagram Clone React Instagram Clone Script Install NodeJS Ubuntu Internet Infrastructure Interview IoT IoT Core IoT Hub JS Game Tutorial Java Feature Toggle Javascript game tutorial JioCinema Case Study Keep Me Login Key Management Kinesis Learn Scrappy with a live project List Live Streaming Data Delivery Live Streaming Performance Optimization Load Load Balancer Looping Dictionary MTech First Semester Syllabus MTech Syllabus MVC Mac Mac Finder Shortcut Media Controller Media Group Attribute Microservices Architecture for Scalability Missing MySQL Extension Mobile Optimization Multiple Audio Sync Multiple Video Sync Mumbai Dmart List MySQL MySQL ERD Generator Next.js Beginner Tutorial Ngnix NodeJS NodeJS Ubuntu Commands Numpy OOPS Concepts OOPS in C# Object Oriented Programming Object Storage Outer Join PHP Installation Error PHP WordPress Installation Error Pandas Personligt identifikations nummer Pipedrive Pipedrive Quickbooks Integration Portfolio Website using React Project Astra PyTorch Quickbooks Quote Generator RGPV Syllabus Download Random SSN Generator ReCaptcha Dumbass React Feature Toggle Real-Time Video Processing Architecture Real-Time Video Processing Backend RegExp Regular Expression Reinstall Bluetooth Drivers Remember Me Remove NodeJS Ubuntu Renew DHCP Lease Reset IP Address Linux Reset IP Address Mac Reset IP Address Windows Reset Remote Connection Reset Remote Connection Failure Resize Textarea Restore Errors Restore Failed UpdraftPlus Route 53 SOS Phone SQL Indexed Tables SQL Joins SQL Seed generator SQS SSIS Package SSIS Tutorial SSN Generator for Paypal SSN Number SSN Number Generator SSN Validator Safari 8 Safari Video Delay SageMaker Scalable Backend for High Concurrency Scalable Cloud Infrastructure for Live Streaming Scalable Frontend Architectures Scalable Live Streaming Architecture Scrapy course for beginners Search A word Search for a Word in Google Docs Secret Management Serverless Service Bus Slovenian VAT Generator SmartTube Software Architect Interview Questions Software Architect Mock Interview Sparse Checkout Spotlight Mac Shortcut Stored Procedure Subtree Merge T-Mobile IMEI Check TFS TMobile IMEI check unlock Team Foundation Server Terraform Associate Certification Training Free Text Search Text color Textarea Resize Jquery Theme Top WordPress Plugins Transform Trim javascript Troubleshooting TypeScript Beginner Tutorial Ubuntu Unleash Feature Toggle Update Computer Name UpdraftPlus 500 UpdraftPlus Backup Restore UpdraftPlus Error 500 UpdraftPlus Error 504 UpdraftPlus Error 524 UpdraftPlus HTTP Error UpdraftPlus New Domain UpdraftPlus Restore Not Working UpdraftPlus Troubleshooting Upstream Reset Error Use Google Drive Images VAT Number Generator Verizon imei check Verizon imei check paid off Verizon imei check unlock Verizon imei check\ Version Control Vertex AI Video View Indexing SQL Views in SQL Virksomhedsregister Virtual friends Visual Studio 2013 WHERE Clause WHPX expo Web Security Web scraping full course with project Web3 What is Feature Toggle WordPress Backup Troubleshooting WordPress Backup UpdraftPlus WordPress Database Backup WordPress Error 503 WordPress Installation Error WordPress Migration UpdraftPlus Wordpress Restore Workspaces Commands Your ip has been banned Zero Click angle between two points bing homepage quiz answers bing homepage quiz answers today bing homepage quiz not working bing homepage quiz reddit bing homepage quiz today byod Verizon imei check chatgpt essay example chatgpt essay writer chatgpt essay writing check tmobile imei contact form 7 captcha contact form 7 captcha plugin contact form 7 recaptcha v3 cpr-nummer engelsk cpr-nummer liste cpr-nummer register cpr-nummer tjek dbdiagram dom load in javascript dotnet core hosting bundle dotnet failed to load dotnet runtime error get url in php how to search for a word on a page how to search for a word on a page windows ipconfig release is cypress javascript istio transport failure jQuery AutoComplete jQuery Input Selector jQuery Menu jQuery Options joins in mySql jquery selector jquery selectors jsPDF jsPDF images missing key key-value keypress event in jQuery kubernetes upstream error localStorage metro by t-mobile imei check nemid cpr-nummer react native expo setup react native on Windows react native setup recaptcha v3 contact form 7 recaptcha wordpress contact form 7 reset connection failure resize control jQuery response code 403 smarttube round number in javascript select sessionStorage smarttube 403 エラー smarttube apk smarttube beta smarttube download smarttube reddit smarttube unknown source error 403 smartube sos iphone top right sos on iphone 13 sos only iphone substr substr in javascript tmobile imei tmobile imei check paid off tmobile imei number total by Verizon imei check trim trim jquery turn off sos iphone turn off sos on iphone 11 unknown source error 403 unknown source error response code 403 smarttube upstream connect error url in php view hidden files mac finder zuegQmMdy8M ошибка 403 smarttube
  • ()
  • ()
Show more
an "open and free" initiative. Powered by Blogger.