ISE Developer Blog
Solving global tech challenges, sharing insights, and empowering developers
Latest posts
Introducing the Copilot Studio + Azure AI Search Solution
Introduction to a scaleable and secure turnkey architecture for deploying Copilots connected to Azure AI Search.
Agent Onboarding Process for Agentic Systems: Maintain accuracy at scale
A robust agent onboarding process is the backbone of scalable, reliable multi-agent AI systems—enforcing uniqueness, rigorous evaluation, and responsible AI practices at every step.
Accelerating AI Development with GitHub Copilot: Real-World Use-Cases
This blog post shares real-world experiences from Microsoft's ISE team using GitHub Copilot to accelerate AI development workflows, demonstrating how AI tools can significantly speed up tasks like creating documentation, class diagrams, data visualizations, and demo scripts when used by experienced developers.
Ensuring Seamless User Experience in Modernization Projects with AI‑Generated Stagehand and Playwright UI Tests
Using AI‑generated tools like Stagehand with Microsoft's Playwright helps ensure a smooth user experience during modernization efforts such as Hyper Velocity Engineering and monolith-to-microservices migrations.
Patterns for Building a Scalable Multi-Agent System
Practical patterns for designing scalable, high-performing multi-agent systems—grounded in real implementation experience.
Tuning and Optimization of Speech-to-Text (STT), Text-to-Speech (TTS), and Custom Keyword Recognition in Azure Speech Services
This blog outlines best practices for optimizing Speech-to-Text (STT), Text-to-Speech (TTS), and Custom Keyword Recognition in Azure Speech Services, helping developers build more accurate and responsive voice-enabled applications.
Integration Testing with Testcontainers
How to leverage Testcontainers for integration testing
Managing secrets on Azure KeyVault with a Tagging strategy to perform automations
Cloud and Infrastructure teams can manage secrets on Azure KeyVault with a Tagging strategy to perform automations.
Working with Git Submodules: Managing Dependencies Across Repositories
Working with Git Submodules and creating actions.
Leveraging Fabric Eventhouse to Store Great Expectations Validation Results
A step-by-step guide to storing data validation results into the Eventhouse & visualize data using queries and dashboard.
Taming Complexity: Intuitive Evaluation Framework for Agentic Chatbots in Business-Critical Environments
This blog post introduces a comprehensive evaluation framework for enterprise chatbots powered by large language models (LLMs), specifically addressing the challenges of assessing Line of Business (LOB) agents in business-critical environments. The authors tackle the fundamental problem that traditional chatbot evaluation metrics fail to capture the nuanced, non-deterministic performance of modern LLM-based systems, proposing a solution that combines realistic chat simulation using an LLM-powered User Agent, automated ground truth generation at scale, and comprehensive metrics including function call precision, r...
Unlocking Vector Search with OneLake Indexer and OpenAI Integration in Microsoft Fabric
Exploring how Microsoft Fabric OneLake indexer integrates with OpenAI
Ground Truth Curation Process for AI Systems
Steps to Produce High Quality Ground Truth Pairs for AI Systems
Customizable and Extensible Evaluation of a GenAI Application
Suggestions on how to evaluate a generative AI application in an adaptable and extensible manner.
Learnings from External Data Handling
This blog post discusses the challenges and solutions encountered by the ISE team at Microsoft while making a distributed system production-ready. It focuses on issues including slow processing speeds and out-of-memory exceptions, and provides insights into the methods used to address these problems.
Enhancing Analytical Queries with Semantic Kernel and In-Memory SQL Processing
Integrating Semantic Kernel with an ephemeral in-memory SQL plugin, enabling secure and efficient analytical queries over structured data.
AI Model Promotion with dstoolkit-mlops-v2
Evaluates various repository structures and designs for maximizing the efficiency of Data Scientists and Software Engineers developing, promoting and deploying AI models on the same project.
Use Agent to Update Dataverse Table Content
Create an agent using Copilot Studio to update the content of a Dataverse table.
Fleet Configuration Management
This post explains the challenge of fleet configuration management, the role of an automated fleet configuration management system, and describes key considerations for building such a system.
PACT Contract Testing – Because Not Everything Needs Full Integration Tests
PACT is a contract testing tool that allows you to define a contract between two applications, enabling
Dockerizing UV
How to Dockerize Python Package Management Tool UV
Hierarchical Waterfall Evaluation of Query Classification, Retrieval & Generation in Multi-Agent LLM Systems
This post presents a hierarchical waterfall framework for evaluating query classification, retrieval, and generation in multi-agent LLM systems.
Efficient Ground Truth Generation for Search Evaluation
This article discusses the challenges and methodologies for creating a reliable groundtruth dataset for search evaluation. It highlights the use of TREC Pooling and GPT-4o assisted ranking to overcome the labor-intensive process of manual labeling, ensuring high-quality search evaluations even with limited data.
Durable Functions for Indexing in RAG: A Practical Python Approach
Azure Durable Functions streamline RAG indexing by combining push flexibility with pull reliability for scalable,
Cloud infrastructure provisioning: best practices for IaC
Infrastructure-as-Code (IaC) is a common DevOps practice that enterprises use to provision and deploy IT infrastructure. Enterprises applying IaC and continuous integration/continuous delivery (CI/CD) pipelines can maintain high availability and manage risk for their cloud environments at scale. However, multi-environment challenges, manual processes, and fragmented guidance still lead to configuration drift, errors, and inconsistencies. These issues are likely to result in downtime, security vulnerabilities, and inefficient resource utilization.
Integration testing with Dapr and Testcontainers
This blog post discusses setting up a Pytest integration test framework for a system using Dapr and Testcontainers. This framework was initially setup for a customer to suit their needs and it has been extracted into a sample project to provide a starting point.
Running RAG with ONNX Runtime GenAI for On-Prem Windows
Exploring how to efficiently run a RAG pipeline with structured language models (SLMs) and guardrails on Windows, achieving inference under 5 seconds with ONNX Runtime GenAI.
Data Validations with Great Expectations in MS Fabric
In this blog post, we will explore how to integrate GX within the Microsoft Fabric environment and use it to validate data programmatically.
Using OpenTelemetry for flexible observability
OpenTelemetry offers flexible observability in distributed systems, this post looks at how to integrate multiple data sources when connected and disconnected from the internet.
The Hidden Risks of Docker Build Time Arguments and How to Secure Your Secrets
This post discusses the security risks of using Docker build-time arguments to pass secrets, and suggests alternative methods for handling secrets securely.
Flexible Tool Selection for ML Model Production
data science and software engineering teams can choose the best tools for their respective roles in delivering machine learning models to production.
Multi Root Workspaces in Visual Studio Code
How to manage multiple independent python projects, with different dependencies, inside Visual Studio Code.
Multi-Provider Strategy for App Configuration in Python
This post discusses a strategy for creating a custom extensible configuration module in python projects.
Instrumenting Apache Spark Structured Streaming jobs using OpenTelemetry
Apache spark monitoring using OpenTelemetry
Unlock Generative AI for Enterprise Scalability
Reusable templates, pipelines, and tools to streamline the setup of GenAI projects, saving time and effort, and ensuring consistency and reliability across projects.
Azure Functions vs. Indexers: AI Data Ingestion
This article compares Azure Functions with pre-built indexers for data ingestion in Azure AI Search, with a focus on using Azure Functions for a flexible, scalable approach. It explores key steps like data migration, index creation, and deployment automation.
Using Managed Identity on Logic App consumption
Deploy Azure Logic App Consumption with Managed Identity using Terraform by leveraging azapi_resource and ARM templates. This setup enables secure authentication without manual credential management.
Revolutionising Customer Feedback: Harnessing Large Language Models for Retail Insights and Intelligence
In this article, we delve into techniques for extracting valuable insights from customer feedback using Large Language Models (LLMs). By identifying themes, sentiment, and competitor comparisons from feedback, businesses can gain a competitive edge.
LLMOps in restricted networks and addressing continuous evaluation long run constraints
In this blog post, we'll explore the challenges we faced in establishing LLMOps and continuous evaluation within a pipeline using Azure Machine Learning, particularly when dealing with long runs and a restricted Bring-Your-Own (BYO) network.
Transforming Language into Code: Building and Evaluating a Robotic Code Generation Copilot
This blog post explores the development and evaluation of an AI assistant that converts natural language into robotic code.
Implementing Evaluation platform on Azure Machine Learning
Azure Machine Learning is known for training and deploying models, but can also be used for running experiments. This blog post will show us how we have implemented our Evaluation platform on Azure Machine Learning.
Semantic Kernel Learnings
A synopsis of our key learnings and findings from using Semantic Kernel.
Building AI Search for Production in Corporate Environments: Key Lessons
In the dynamic world of AI and data science developing production-level solutions for corporate environments comes with its own set of challenges and lessons. As a data science team working within Microsoft, we recently completed an engagement for a large company where we leveraged cutting-edge technologies, including OpenAI tools, GPT-4o for generating syntactic datasets, embedding models like text_embedding_3, and Azure AI Search for implementing both text and hybrid search solutions. Here are 10 key lessons we learned along the way.
Accessing Private Resources in Azure
A practical guide for developers on connecting to Azure resources with private endpoints through a VPN.
Three Ways to Simplify CI/CD Pipelines on GitHub Actions
This post focuses on three ways to simplify CI/CD pipelines deploying to Azure with GitHub Actions.
Building a Multi-tenant GenAI gateway using APIM
This blog shares insights on developing a GenAI gateway with multi-tenancy and quota management capabilities implemented using Azure APIM where customers can access the GenAI resources across different service tiers like Freemium, Basic, and Premium with each tier having it's own quota and rate limits. The solution used the concept of "Products" to group APIs related to specific entitlements and using Product Policies, simplifying the overall design and ensuring scalability.
Multimodal RAG with Vision: From Experimentation to Implementation
This blog post delves into the experimentation journey of fine-tuning a multimodal RAG pipeline to best answer user queries that require both textual and image context. We ran our experiments by systematically testing various approaches, adjusting one configuration setting at a time and using clearly defined evaluation metrics to validate the performance of each component of the RAG pipeline in isolation, as well as the end-to-end inference flow.
Streamlining Error Handling in Power Automate for Better Workflow Performance
This post explores effective error handling strategies in Power Automate to enhance workflow reliability and maintainability through practical techniques and integrations.
PromptFlow Serve – Benchmark Result Analysis
In this post we discuss how to test the throughput of PromptFlow pf-serve module and key learnings doing so. We explore the impact on throughput and performance the different WSGI and ASGI hosting methods have and the importance of engineering your Python nodes with the async await pattern for I/O.
Earning Agentic (and LangChain) Complexity
This post examines the challenges of adopting complex technologies like LangChain and agentic solutions in production environments, emphasizing the importance of understanding the necessity of such complexity. It provides insights on how to evaluate these technologies carefully, manage dependencies, and adhere to best practices for secure and stable AI applications.
Semantic Router using Azure AI Search
Potential semantic routing solution using Azure AI Search for scalable query handling.
Measuring Differentials of Product Images in AI-generated Ads
Various methodologies of measuring differentials between a product image and an AI-generated ad for the purpose of product representation integrity in serving AI-generated ads.
Converting multiple sources to FHIR using Liquid
A brief summary of how Microsoft ISE teams creation a solution to integrate patients data from multiple fragmented sources into a standard FHIR data model
Profiling Docker Compose services through Visual Studio
A brief summary of how Crew Clark were able to profile performance using Visual Studio and within a Docker Compose environment.
LLM Prompt Injection Considerations With Tool Use
This post discusses a pattern to prevent a class of prompt injection attacks in LLM-based solutions. It emphasizes the importance of building strong foundational patterns to mitigate risks and avoid potential pitfalls. By implementing this pattern, teams can enhance the security of their tool-based solutions.
Document Summarization Solution Patterns using Azure Open AI & Langchain
This post lists the various solution patterns that can be applied for document summarization. Document summarization comes with its challenges related to token limitation and chunk sizes. This blog post discusses about the solutions to tackle those challenges.
Azure IoT Operations Data Processor Pipelines: Unlocking Efficiency in the Industrial Metaverse
In this post we explore the implementation of Azure IoT Operations Data Processor pipelines in a manufacturing context, focusing on data processing at the edge.
Learnings around developing with Microsoft Graph Toolkit
Learnings of Microsoft Graph Toolkit from our recent project, including data leaking and privacy concerns that can help developers get a jumpstart with Microsoft Graph Toolkit.
Empowering Collaboration with a Tech Savvy Customer
Empowering Collaboration with a Tech Savvy Customer
Next-Level Boilerplate: An Inside Look Into Our .Net Clean Architecture Repo
In this article, we will take an inner look at the clean architecture boilerplate and how it helps kickstart our projects rapidly.
7 Essential Tips: Accelerate Prompt Flow Development
This post focusses on tips and tricks to accelerate from flow development through use of dev container & shell scripts.
Start Simple, Scale Fast: Azure Storage for Distributed Computing
Azure Storage Accounts are one of the simplest resources on Azure, but simultaneously one of the most useful and reused building blocks across the Microsoft Cloud ecosystem. Blobs, leases, and queues are fundamental components that enable powerful patterns. Let's dig into why Storage Accounts should be in your Azure toolkit.
Simplified Connection State Management
This post advocates for a simplifying a complex network of states into simple states that correlate with user expectations.
Synchronizing multiple remote Git Repositories
summary of the post
Making an Application More Robust With Data Mapping
How to use data mapping to make your application more robust against unexpected third-party data schema changes.
Development Containers Simplified
This post talks about the concept of development containers and how it can help us to solve the challenges we face when setting up our development environment or onboarding a new team member.
Testing VSCode Extensions with TypeScript
Due to the nature of VS Code, testing extensions can be quite complex. In this blog post, we explore various ways to write unit tests for VS Code extensions, as well as strategies for writing more sufficient integration tests.
Develop Microsoft Teams multi-tenants application that enables access to a legacy software running on-premises
In this article, we describe how we built a multi-tenants Microsoft Teams application that is able to connect to a legacy software running on-premises at different customers', in a scalable, secure and reliable way.
Image manipulation experiments for Mobile Read Hero Images(MRHI) compatibility
Introduction The Consumer Packaged Goods (CPGs) industry relies on multiple channels for selling the products and aims to provide a seamless buying experience for the consumer. With the advent of omni-channel retailing, Consumer Packaged Goods (CPGs) and retailers are striving towards providing the best possible experience to the customer alongside working on providing the most available information on the product they are selling on these touch points. On an e-commerce Channel which sells multiple products, the need for a compliant product (SKU) image is key. This is where a Mobile Ready Hero Image (MRHI) becom...
APIs load testing using K6
In this post, We will go through the load testing concepts and how to use the K6 framework to perform load testing for API endpoints.
Plugins in Dataverse
This post focusses on different technology options available for exporting data out of Dataverse based on an event-driven architecture. It also provides guidance on how to achieve it.
Crafting an Opinionated Logging and Error Handling Framework for Enhanced Observability in PowerShell
Logging with PowerShell and share insights gained during our development journey, resulting in the development of a highly opinionated set of code to manage logging effectively.
Consuming Azure OpenAI resources in AKS with Workload Identities
This post will showcase the use of Azure OpenAI from AKS without the need for sharing secrets.
Streamlining Development through Monorepo with Independent Release Cycles
Streamlining Development through Monorepo with Independent Release Cycles
Engineering Document (P&ID) Digitization
Journey on how to solve engineering document digitization problem through a proposed method and the end-to-end solution.
APIs testing using HTTP files and Rest Client
This post focuses on providing a comprehensive practical way to perform end-to-end testing of the API endpoints, using HTTP files and Rest Client
Validating Data in Synapse Using Data Flows and Pipelines
How to use Synapse data flows and pipelines to validate data quality in a data warehouse solution.
Jest Mocking Best Practices
Best practices and common mocking scenarios for using Jest to unit test TypeScript applications.
Automate the capturing of test results from Application Insights
This post provides instructions on how to automate querying application insights test results using a script. It explains how to format the datetime, install the application insights extension, set the offset, and handle the query results. The script can be adapted to other scripting languages. The result is a reusable script that can output results in any format and reduce manual filtering errors.
Debugging Java Dapr-enabled Apps in GitHub Codespaces
To simplify the development and debugging of complex Java Dapr-enabled microservices we recommend leveraging Docker Compose to define all services including the Java Apps, each with its own Dapr sidecar, plus infrastructure/dependent services all these running in individual containers. Using a VS Code devcontainer with Docker-in-Docker support, enabling Java extensions, and installing Maven and OpenJDK. Creating a new GitHub Codespaces instance and finally employing VS Code to attach to a remote Java process for debugging purposes.
Centralizing Data with Delta Lake and Azure Databricks
In this post, we delve into a real-world case study on centralizing data with the power of Azure Databricks. Learn about the challenges, solutions, and decision-making processes that shaped this data centralization project.
Serving Swagger UI from a Golang Azure Function Custom Handler
Our team used Swaggo, a Golang Swagger tool, to expose an OpenAPI spec for a Azure Function hosted Golang API. This post describes what lead to the decision along with guidance on how to expose an OpenAPI spec for an Azure Function hosted Golang API.
Patterns for optimizing data retrieval from Cosmos DB
In this blog post, we share how our team improved the performance of read operations on documents stored in Cosmos DB.
ACI for jobs
This post shows using Azure Container Instances for job processing such as data generation and ingestion.
Saving CO2 using location and time shifting in Azure
Saving CO2 using location and time shifting in Azure
4 Key Tips: Production-Ready Spring Boot REST API with PostgreSQL
4 key tips when developing production ready Spring Boot REST API
Multi-Cluster Application Deployments to Kubernetes at Scale at Edge
An innovative solution has been developed to address challenges in deploying applications in distributed environments with multiple clusters. These challenges encompass scenarios like edge deployments across regions and distributing components across numerous co-located clusters. While Kubernetes is commonly used for orchestrating deployments through YAML descriptors, GitOps tools such as Flux, ArgoCD, and Jenkins X automate deployment management. However, as cluster numbers increase, issues arise regarding organization, configuration, and scalability. To tackle these challenges, a Control Plane-based deployment ...
Build a robust transaction processing solutions to improve payment experience of retail end customers
In this post, we will describe how to build a data ingestion framework that receives payment transaction events from internal or external payment service providers and process the events in real-time. The ingested payment data can be used to provide the real time view of the payment transactions to merchants to improve the payment experience of the retail end customers.
Authoring an RBAC API for your application
Guidance when writing your own RBAC API for your application.
Coding with Customer: A Story of Building a Federated Data Catalog with Microsoft Purview
How we coded with customer team to build a first version of their federated data catalog, with Microsoft Purview.
Lessons Learned In The Field For DevOps And Azure Container Apps
This post will highlight some of the challenges teams can experience while CI/CD-ing with Azure Container Apps.
Leveraging Azure Load Testing for Optimal Performance and Scalability
In a recent customer engagement, our team leveraged load testing to evaluate system performance. In this post, we will share our experience of utilizing the Azure Load Testing service and highlight the service's most impressive features.
Using Postman to Create Acceptance Tests for Customer Engagements
An Easy and Effective Approach to Acceptance Testing for Customer Engagements
Developing with Multiple Repositories inside a Single Solution for .NET
A strategy for working with interdependent .NET repositories locally and remotely.
Using Azure Cosmos DB with Integrated Cache
Industry use case for Cosmos DB with Integrated Cache
Best Practices for Performance Testing: A Guide for Developers
This post underscores the importance of performance testing in software development, based on insights from a project involving a high-throughput containerized workload. It highlights the necessity of establishing clear performance goals, early identification and collaboration with a Performance Engineer, effective use of Application Performance Monitoring (APM) tools, and maintaining a dedicated performance environment. It also advocates for frequent, early, and local testing to expedite issue detection and resolution. Additionally, the article emphasizes best practices such as automation, clear log segregation,...
Maintaining API Clients With NSwag Model Generation
Our team used NSwag, an OpenAPI .NET toolchain, to generate C# models in code and improve the maintainability of a .NET Core API client for a project. This post describes what lead to the decision along with guidance on how to use Nswag to generate C# models in code.
Temporal Mutual Transport Layer Security(mTLS) and single-sign-on(SSO) using Azure
This guide explores Temporal platform security features and how it can be integrated with Azure Key Vault and Azure Active Directory.
Use Cases for Event Hub
This post will discuss multiple use-cases for Azure Event Hub that hopefully help you think about how to get creative in your own solutions.
Large Language Model Prompt Engineering for Complex Summarization
Learn how to use GPT / LLMs to create complex summaries such as for medical text
Solving store inventory allocation problem of CPG
Solution of store inventory allocation problem of CPG
Coding with AI
Our team used AI tools to write code, documentation, indexes, etc. extensively during our last engagement. This post will talk about what we used and how we used it.
Building a custom workflow engine on top of Durable Task Framework DTFx
In this post we write about how we implemented a custom workflow engine that supports DSL, workflow cancellation and closure on top of Durable Task Framework (DTFx), explaining the why behind our choices and discussing the challenges we faced.
Guidelines for Organizing and Testing Your Terraform Configuration
Guidelines on how to structure a Terraform infrastructure configuration together with testing and documentation.
Getting to Know TypeScript Generics
A guide to using TypeScript Generics as a way to create reusable logic that will work for a multitude of types.
Launching Litmus Chaos Scenarios Programmatically
Guidance for how to kick off a Litmus Chaos Scenarios programmatically and in an Azure DevOps Pipeline.
A Technical Journey into API Design-First: Best Practices and Lessons Learned
A Practical Guide to API Design-First Development with TypeSpec and OpenAPI
Hitchhikers Guide to Workflow Engines
This guide explores workflow engines, their essential features, and types, while offering insights and evaluation criteria to help you choose the right solution for your specific use case.
Data preparation at scale on Azure ML using Dask
In this post we will describe how we were able to run our Dask-based data preparation at scale on Azure ML Compute Clusters, using Dask-MPI and the native Azure ML MPI support.
Transforming Financial Planning with Power Platform: A Journey through Data Modeling on Dataverse
Data modeling on Dataverse with real-world customer scenarios
How to Deploy a Production-Ready Node.js Application in Azure
Step-by-step guide on how to deploy node.js application in production using docker and Azure pipeline
In-App User Experience with Flutter Embedded Web View and Azure Active Directory B2C User Flows
Guidance on how we can integrate Azure AD B2C's user login workflow within mobile app development using Flutter.
Effortless Pair Programming with GitHub Codespaces and VSCode LiveShare
Revolutionize your collaboration game, experience effortless pair programming with GitHub Codespaces and VSCode.
A Hypothesis-Driven Approach to Building and Testing Resilience in .NET Azure Functions
An overview of how to use the Polly and Simmy libraries for a hypothesis-driven resilience engineering and chaos testing approach to .NET Azure Functions.
Large-scale Data Operations Platform for Autonomous Vehicles
Implementing a large-scale data operations platform for autonomous vehicles using Azure Data Factory (ADF) and Azure Batch.
Common Pitfalls of using Self-Hosted Build Agents
Avoid the common pitfalls of moving from vendor-hosted CI/CD agents to self-hosted ones.
Observability on IoT Edge leveraging a push model approach
Solution to continuously push logs from IoT Edge devices to a Log Analytics Workspace on Azure.