Celebrating 15 years of Yet Another Podcast

Today we are celebrating 15 years of commercial-free podcasting on . NET-related issues.

Thank you for your ongoing interest and support. Stay tuned for a very special podcast on Visual Studio coming sometime next week.

Posted in Essentials | 663 Comments

Mads K (Microsoft) on Visual Studio and VSCode

Mads K of Microsoft talks about the targeting of Visual Studio and VSCode. Towards the end, I ask him about a few of his favorite plugins.

View this podcast on YouTube

Posted in Visual Studio | Tagged | 663 Comments

Jeff Fritz on .NET Aspire and CoPilot Agents

Jeff Fritz (Microsoft) joins me to talk about .NET Aspire, CoPilot Agents and Vibe programming. This is a show not to miss; his enthusiasm is catching and his knowledge is astonishing.


Posted in Aspire, CoPilot | Tagged | 6 Comments

Video: Visual Toolbox: Git in Visual Studio

Posted in Git | 1,282 Comments

Richie Bonilla and Forage AI Email

Forage is an AI email assistant that sorts your mail into categories, provides a summary once or twice a day (your choice) and summarizes newsletters into bullet points.

I talk with Richie Bonilla (CEO and co-founder)* about his startup, what lead him to create Forage and how it works.

https://foragemail.com

* Co-founder? Co-Founder? Cofounder?

Posted in Essentials | Tagged | 1,485 Comments

CoPilot Agents

Prepare to have your mind blown. Copilot Agents are powerful AI tools for Visual Studio Code and Visual Studio. Used to CoPilot? — you ain’t seen nothing yet!

James Montemagno and Burke Holland of Microsoft discuss how to get it, and how to use it.

https://code.visualstudio.com

GitHub Copilot for Skeptics Who Still Think AI is Overrated | BRK124

https://youtube.com/@code

(30+) Visual Studio Code (@vscode.dev) — Bluesky

Posted in CoPilot | Tagged | 1,139 Comments

Mike Kistler (Microsoft) on OpenAPI

OpenAPI is the framework of choice for documenting APIs


OpenAPI support in ASP.NET Core API apps
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/openapi/overview?view=aspnetcore-9.0
 
Generate OpenAPI documents at build-time
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/openapi/aspnetcore-openapi?view=aspnetcore-9.0&tabs=visual-studio%2Cvisual-studio-code#generate-openapi-documents-at-build-time
 
The project file property to set the directory where the OpenAPI should be saved is “OpenApiDocumentsDirectory” and it is documented here:
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/openapi/aspnetcore-openapi?view=aspnetcore-9.0&tabs=visual-studio%2Cvisual-studio-code#modifying-the-output-directory-of-the-generated-open-api-file
 
This section contains a summary of how C# types and attributes map to OpenAPI schemas.
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/openapi/include-metadata?view=aspnetcore-9.0&tabs=minimal-apis#include-openapi-metadata-for-data-types
 
We talked about the OpenAPI specification — the latest version is here:
https://spec.openapis.org/oas/v3.1.1.html
 
I also briefly touched on the Overlay specification — that is here:
https://spec.openapis.org/overlay/v1.0.0.html
 
and the Arazzo Specification — that is here:
https://spec.openapis.org/arazzo/v1.0.1.html
 
The Roadmap for ASP.NET Core features in .NET 10 is here:
https://github.com/dotnet/aspnetcore/issues/59443

 

Posted in API | Tagged | 1,196 Comments

Claude

There’s a new AI kid on the block (https://claude.ai) and he is very powerful for programming and many other things. At the risk of being obnoxious, here is what he said about me:

Jesse Liberty is a well-known software developer, author, and educator in the computer programming and software development world. He has written numerous books on programming languages and technologies, particularly focusing on C++, C#, and .NET development.

Continue reading
Posted in AI | 1,422 Comments

APIs with C# – Part 4 Options

NET provides support for passing options via environment variables, appsettings.json, and XML files. as well as command line arguments. In short, each higher level overrides the settings in lower levels.

To add options:

  1. Create a public class and name it (we’ll use funcOptions)
  2. Add a string property called returnValue (or name it whatever you like) and set the property to some value (e.g., MyOptions)
  3. We’re going to override that value in applications.json
  4. Add a property in appsettings.json (e.g., retVal) and set that property to a different value than we did in step 2

It’s time to set up the startup configuration. When you are done, your Program.cs should look like this:

var host = new HostBuilder()
.ConfigureFunctionsWebApplication()
.ConfigureServices((context, services) =>
{
  services.AddApplicationInsightsTelemetryWorkerService()
  .ConfigureFunctionsApplicationInsights()
  .AddOptions<MyOptions>
     .BindConfiguration("");
})
.Build();
host.Run();

The next step is to inject IOptions<MyOptions> and in the constructor set a member variable.

The Run method will look like this:

[Function("Function1")]
public IActionResult Run(HttpTrigger(AuthorizationLevel
  .Anonymous, "get", "post")] HttpRequest req)
{
   return new OKObjectResult(options.value.retValue);
}

 

Posted in APIs | 1,156 Comments

144,000 users

My site says we just crossed 144,000 users. I’m stunned.

Posted in Essentials | 1,360 Comments

Turn the tables: 2016

Episode 50: The Technical Journey of Jesse Liberty

 

Episode 51: The Technical Wisdom of Jesse Liberty

Posted in Essentials | 1,078 Comments

API – Functions Part 3: Routing

In the previous part of this series, we looked at creating our first API. But how do you determine which API is being invoked? This is accomplished with routing.

If you have a Products class your entry (end point) might look like this:

[Function(nameof(Products))]
public IActionResult Run(HttpTrigger(AuthorizationLevel.Anonymous,
"get", Route="products/{category}/{id: int}")]
HttpRequest req, string category, int id)
{
  return new OkObjectResult(new {category, id});
}

Notice the routing property (“products/{category}/{id: int}” — this allows us to customize and restrict the arguments from the desired endpoint. The customer/user can now use the same endpoint for a variety of situations.

Continue reading

Posted in API, APIs, Essentials, Mini-Tutorial | Tagged | 997 Comments