Thursday, October 15, 2026

Step by Step Guide to Migrating Chef Infra Client 18 to 19 Using Azure DevOps Pipeline

Migrating from Chef Infra Client 18 to Chef Infra Client 19 is more than a simple version upgrade. With the transition from Omnibus to Habitat based packaging, a newer Ruby version, changes to installation paths, updated licensing requirements, the migration requires careful planning and compatibility checks. In this blog, we will explore the step by step approach to migrating safely using azure DevOps pipeline.

Prerequisites:

- Windows servers: The target Windows servers must have Chef Infra Client installed.

- Azure DevOps Deployment Group: Each target server must be registered with the appropriate Azure DevOps Deployment Group.

- Valid Chef License Key: Ensure a valid Chef License Key is available for downloading and installing Chef Infra Client 19.

- Chef Migration Tools: Ensure the required Chef migration tools, including migrate-ice, are available and configured.

Thursday, September 24, 2026

Resolving a Misleading "Could not load file or assembly" Error in .NET Framework 4.8

Keeping NuGet packages up to date is a recommended practice for most development teams. Package updates can provide security fixes, bug fixes, performance improvements, and new features. However, updating NuGet packages can sometimes introduce assembly version mismatches or missing dependencies, which may only become visible at runtime.

In this blog, we will look at one such issue that occurred in a .NET Framework 4.8 application hosted in IIS, where the error message pointed to the missing assembly.


Prerequisites:

The issue described in this blog occurred in,

.NET Framework 4.8

ASP.NET application hosted in IIS

NuGet packages updated to newer versions

IIS application configured for application auto-start/preloading

Wednesday, September 9, 2026

Resolving New Chef Licensing Warnings During Bootstrap

Desired State Configuration (DSC) is a well-known concept used to manage larger amounts of infrastructure. Chef is one of the tools commonly used to implement this approach.

Recently, Chef has changed its licensing model and downloading and using Chef software now requires a valid license. As a result, you may see licensing warnings when bootstrapping new nodes using the knife bootstrap command.

In this blog post, we’ll discuss what needs to be done to get rid of the licensing warning that appears during the knife bootstrap process and how to provide a valid Chef license when installing Chef Infra Client on a new server.

Sunday, August 30, 2026

Convert Docker Compose Files to Kubernetes Manifests with Kompose

Docker Compose make it easy to spin up local development environment with all of application dependencies using a single Compose file. However, when we want to run the same application on Kubernetes, we normally need Kubernetes configuration files such as, deployment, service, etc. In this blog we’ll explore how Kompose works, how to use it to generate Kubernetes configurations from an existing Compose file, and what you should review or modify before deploying the generated manifests to a Kubernetes cluster.


Pre-requisites:

  • Docker installed
  • Kind installed
  • kubectl installed
  • An existing Docker Compose file for the application

Sunday, August 16, 2026

Exposing Kafka from kind to a Local Windows Application

In our previous blog post, we discussed a workaround for the DNS error that occurs when an application running on a local Windows machine connects to Kafka. In this post, we will discuss the proper solution.

Our Kafka cluster runs inside Docker through a local kind Kubernetes cluster rather than directly on the host machine. Kafka advertises broker addresses using Kubernetes DNS names, which can be resolved from inside the cluster but not by an application running on Windows. To make Kafka reachable from the host, we must expose the required ports from the kind node container to the host machine.

Tuesday, July 28, 2026

Troubleshooting Kafka DNS Resolution from a Local .NET Application

This blog explains a DNS resolution error that can occur when testing an event-driven .NET application locally with Kafka running in a kind cluster. You’ll learn what causes the issue and how to apply a practical workaround to get your local development environment working quickly.

Pre-requisites:

  • A Kafka cluster running on a local Kind cluster.

  • Strimzi configured to manage the Kafka cluster.

  • A .NET API capable of creating or publishing to Kafka.

  • kubectl configured to access your Kind cluster.

  • PowerShell running on Windows.

  • The BootstrapServers value is intentionally set to, localhost:9092 in appsettings.json

Sunday, July 26, 2026

Compare Commits Easily in Azure DevOps with the New UI Feature

Troubleshooting software bugs often involves comparing commits to identify the changes introduced between two points in the project's history. This is one of the most common techniques used by developers to investigate regressions, validate fixes, and understand the impact of code changes.

Azure DevOps now provides a built in UI to compare commits, eliminating the need to manually construct comparison URLs. In this blog post, we'll explore how to use this feature to compare commits and review the differences between them.

Prerequisites

  • An Azure DevOps repository
  • Multiple branches or commits available for comparison

Tuesday, June 30, 2026

Easily Navigate Large Azure DevOps Pipelines

When an Azure DevOps pipeline contains hundreds of stages, navigating the pipeline UI can become challenging for several reasons.

  • * Finding a specific stage among hundreds can be difficult.
  • * Extensive horizontal and vertical scrolling is often required.
  • * Failed stages are harder to identify in a large pipeline.
  • * Navigation more difficult for users.

To address these challenges, Azure DevOps has introduced a new feature that makes navigating large pipelines much easier.

Prerequisites:

An Azure DevOps pipeline with multiple stages.