Microsoft Agent Package Manager (APM) Explained

If you have used npm, pip, or nuget, Microsoft Agent Package Manager (APM) will feel familiar.

APM helps you manage dependencies for AI agents the same way package managers help you manage code dependencies.

In simple terms:

  • package.json is for app dependencies
  • requirements.txt is for Python dependencies
  • apm.yml is for AI agent dependencies (skills, prompts, instructions, MCP servers, plugins)

Why APM Is Useful

Without APM, agent setup is usually manual:

[Read More]
AI  Copilot  MCP  Agent 

.NET Minimal APIs and Native AOT

.NET Minimal APIs revolutionized API development by reducing boilerplate code, while Native AOT (Ahead-of-Time compilation) delivers lightning-fast startup times and reduced memory footprint. This guide covers everything you need to master both technologies.

What are Minimal APIs?

Minimal APIs were introduced in .NET 6 as a simplified way to build HTTP APIs without the ceremony of controllers, action methods, and heavy abstractions.

Traditional Controller-Based API

[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
    private readonly IProductService _productService;

    public ProductsController(IProductService productService)
    {
        _productService = productService;
    }

    [HttpGet]
    public async Task<ActionResult<List<Product>>> GetAll()
    {
        var products = await _productService.GetAllAsync();
        return Ok(products);
    }

    [HttpGet("{id}")]
    public async Task<ActionResult<Product>> GetById(int id)
    {
        var product = await _productService.GetByIdAsync(id);
        if (product == null)
            return NotFound();
        return Ok(product);
    }
}

Minimal API Equivalent

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/api/products", async (IProductService productService) =>
{
    var products = await productService.GetAllAsync();
    return Results.Ok(products);
});

app.MapGet("/api/products/{id}", async (int id, IProductService productService) =>
{
    var product = await productService.GetByIdAsync(id);
    return product is not null ? Results.Ok(product) : Results.NotFound();
});

app.Run();

Key Benefits:

[Read More]

Object-Oriented Programming

Object-Oriented Programming isn’t just about classes and objects—it’s a paradigm that shapes how we architect entire systems.

Beyond the Basics: OOP as Architecture

Most developers learn OOP through textbook examples: Dog extends Animal, Car has Engine. But at the architect level, OOP manifests as:

  • System boundaries: What should be a microservice vs a class?
  • Coupling decisions: Where do we draw abstraction boundaries?
  • Team organization: How do we align teams with object models?
  • Performance trade-offs: When does OOP overhead matter?

The Architect’s Reality:

[Read More]

Kubernetes Explained

Kubernetes (K8s) is the industry-standard platform for container orchestration. It automates deployment, scaling, and management of containerized applications across clusters of machines.

What is Kubernetes?

Kubernetes is an open-source container orchestration platform originally developed by Google. It solves several critical problems:

  1. Automated deployment: Deploy containers across multiple machines automatically
  2. Self-healing: Restart failed containers and replace unhealthy instances
  3. Scaling: Scale applications up or down based on demand
  4. Load balancing: Distribute network traffic efficiently
  5. Rolling updates: Update applications without downtime
  6. Resource management: Optimize CPU and memory usage across clusters

Think of Kubernetes as an operating system for your datacenter or cloud infrastructure.

[Read More]

Authorization Code Flow with PKCE Explained

If OAuth terms feel confusing, you are not alone.

This post explains Authorization Code Flow with PKCE in plain language with simple examples.

What Problem Does PKCE Solve?

In OAuth Authorization Code Flow, the app gets an authorization code first, then exchanges it for tokens.

The risk: if an attacker steals that authorization code, they may try to exchange it and get tokens.

PKCE (Proof Key for Code Exchange) adds a one-time secret so the stolen code alone is not enough.

[Read More]

SOLID Principles

SOLID principles are often taught as fundamental rules, but at the architect level, they’re guidelines that require judgment, trade-offs, and contextual application.

Beyond the Textbook: SOLID in Practice

Rigid adherence to any principle can be as harmful as ignoring it entirely.

The real skill lies in understanding:

  • When each principle adds value
  • What you’re trading off by applying it
  • How principles interact and sometimes conflict
  • Why context matters

Single Responsibility Principle (SRP)

“A class should have one, and only one, reason to change.”

[Read More]

WebSockets Explained: A Journey into Real-Time Communication

WebSocket is a two-way, full-duplex protocol utilized in client-server communication contexts. As a stateful protocol, the connection between the client and server remains active until terminated by either party. Once the connection is closed by either the client or server, the connection ends on both sides.

Sample webSocket URI

A WebSocket URI has the following format:

ws://hostname:port/path?query

For secure WebSocket connections, the scheme would be wss:

wss://hostname:port/path?query

Here’s an example of a WebSocket URI:

[Read More]

NetMQ: Breaking Down the Basics

NetMQ is a .NET library that provides a high-level API for several messaging patterns, allowing applications to communicate with each other over a network. It’s a 100% native C# port of the lightweight messaging library ZeroMQ.

NetMQ is transport-agnostic and can work over several transports such as inproc (inter-thread, inter-process), IPC (inter-process), TCP, and more. It’s designed to handle high load, is very flexible, and doesn’t require a dedicated message broker.

[Read More]
netmq 

Self-Signed TLS Certificates in Browsers

I recently had the need to create a self-signed certificate for one of our web applications wherein the browser does not display a warning message indicating Your connection is not private with the error NET::ERR_CERT_AUTHORITY_INVALID. It was necessary to create certificates for several domains, such as www.subdomain.example.com and www.myblog.sample.com.

A self-signed SSL/TLS certificate must be an X.509 version 3 multidomain SAN certificate and requires a root certificate.

A single certificate can be created for both domains using Subject Alternative Name (SAN).

[Read More]
tls 

Understanding AWS SAM: A Serverless Infrastructure

A serverless lambda function has to be designed, developed, built, debugged, and tested locally for my project. AWS Serverless Application Model (AWS SAM) is something that I came upon.

AWS SAM consists of two primary parts:

  1. AWS SAM template specification – An open-source framework that we can use to define our serverless application infrastructure on AWS.
  2. AWS SAM command line interface (AWS SAM CLI) – A command line tool that we can use with AWS SAM templates to build and run the serverless applications.

The SAM CLI offers a number of methods for locally creating, building, executing, and debugging lambda functions. Let’s explore with a Python sample project.

[Read More]
AWS