C# Corner
Tech
News
Videos
Forums
Trainings
Books
Live
More
Interviews
Events
Jobs
Learn
Career
Members
Blogs
Challenges
Certifications
Bounties
Contribute
Article
Blog
Video
Ebook
Interview Question
Collapse
Feed
Dashboard
Wallet
Learn
Achievements
Network
Refer
Rewards
SharpGPT
Premium
Contribute
Article
Blog
Video
Ebook
Interview Question
Register
Login
Tags
No tag found
Content Filter
Articles
Videos
Blogs
Resources
News
Forums
Interviews
Complexity Level
Beginner
Intermediate
Advanced
Refine by Author
[Clear]
Saurav Kumar(15)
Nidhi Sharma(14)
Riya Patel(13)
Ananya Desai(10)
Niharika Gupta(10)
Tuhin Paul(8)
Aarav Patel(4)
Ajay Narkhedkar(4)
Lakshan Sulochana Fernando (4)
Abiola David(3)
Ketan Sathavara(2)
Rajkiran Swain(2)
John Godel(2)
Mukesh Kumar(1)
Adam John(1)
Pradeep Prajapati(1)
Sagar Rane(1)
Sandhiya Priya(1)
Dr Gomathi(1)
Krishan Sehrawat(1)
Ashish Bhatnagar(1)
Aqib Murtaza(1)
Resources
No resource found
RAG-Powered Credit Scoring vs. Traditional Feature-Based ML
Jul 28, 2026.
RAG vs. traditional ML for credit scoring: explore LLM agents, heterogeneous data, and enhanced explainability for better underwriting.
Fort Knox for Your Prompts: How to Secure PII & Prompts When Connecting to Azure OpenAI
Jul 29, 2026.
Secure your Azure OpenAI deployments by protecting PII and prompts with a layered, step-by-step approach. Learn best practices for data handling, access control, and threat mitigation.
Graceful Shutdown in ASP.NET Core: Preventing Data Loss During Application Restarts
Jul 29, 2026.
Master ASP.NET Core graceful shutdown to prevent data loss, ensure reliable deployments, and minimize service interruptions during restarts.
Building Intelligent UAV Applications with ASP.NET Core, Azure, and AI
Jul 29, 2026.
Learn how to build Intelligent UAV Applications using C#, ASP.NET Core, AI, Azure, IoT, SignalR, and edge computing with scalable enterprise architecture.
10 Common SQL Interview Questions Every Developer Should Know
Jul 29, 2026.
Master SQL interviews with 10 essential questions on DELETE, WHERE, JOINs, UNION, keys, CHAR/VARCHAR, indexes, COUNT, stored procedures & normalization.
Secure Secrets Management in ASP.NET Core: User Secrets, Azure Key Vault, and Production Best Practices
Jul 28, 2026.
Secure ASP.NET Core secrets with User Secrets, Azure Key Vault, and best practices. Protect your app from development to production.
How to use ShowColumns() Function in Power Apps
Jul 27, 2026.
Master Power Apps' ShowColumns() function to select specific data columns, streamlining your apps and improving performance. Learn syntax and examples.
Teach Claude Your Auth Rules - Stop Reviewing AI Code for Missing [Authorize] Attributes
Jul 25, 2026.
Teach Claude Code your auth rules via CLAUDE.md to prevent security gaps in AI-generated code. Streamline reviews & ensure consistency.
How to Use DropColumns in Power Apps: Remove Unwanted Columns from Data
Jul 24, 2026.
Master Power Apps' DropColumns() to efficiently remove unwanted columns from tables, collections, and data sources, simplifying your data.
Solving the Imbalanced Data Problem in RAG
Jul 24, 2026.
Solve RAG imbalanced data with pure Python weighted sampling. Ensure critical edge cases are represented, boosting LLM performance without external dependencies.
Building RAG Applications in C# with Semantic Kernel and Azure AI Search
Jul 24, 2026.
Build C# RAG apps with Semantic Kernel & Azure AI Search. Ground LLMs in your data for accurate, context-aware responses.
Vector Databases with .NET: PostgreSQL pgvector vs Azure AI Search vs Qdrant
Jul 24, 2026.
Compare PostgreSQL pgvector, Azure AI Search, and Qdrant for .NET AI apps. Choose the best vector database for RAG, semantic search, and more.
Entity Framework Core 10 Performance Tuning: 25 Production Optimization Techniques
Jul 24, 2026.
Master EF Core 10 performance! Discover 25 production optimization techniques for faster, scalable .NET data access. Boost your app's speed.
Secure AI Applications in ASP.NET Core: Preventing Prompt Injection and Data Leakage
Jul 24, 2026.
Secure ASP.NET Core AI apps against prompt injection & data leakage. Learn best practices for LLM security, RAG, and tool access.
Deploying AI Agents on Azure Container Apps with .NET 10
Jul 24, 2026.
Deploy .NET 10 AI agents on Azure Container Apps for scalable, secure, and cost-effective production solutions.
Building Event-Driven Microservices with .NET Aspire and Azure Service Bus
Jul 24, 2026.
Build resilient, scalable .NET microservices with Aspire & Azure Service Bus. Master event-driven architecture for robust distributed systems.
ASP.NET Core 10 Authentication & Authorization Best Practices
Jul 24, 2026.
Master ASP.NET Core 10 authentication & authorization best practices. Secure your APIs, protect user data, and build production-ready applications.
Azure AI Foundry for .NET Developers: Build End-to-End Enterprise AI Applications
Jul 24, 2026.
Build enterprise AI apps with .NET using Azure AI Foundry. Manage models, deploy securely, and scale AI solutions efficiently.
Building AI-Powered APIs in ASP.NET Core Using Azure OpenAI
Jul 24, 2026.
Build AI-powered APIs in ASP.NET Core with Azure OpenAI for scalable, secure, and intelligent applications. Explore production best practices.
Designing Event-Driven Microservices with .NET and Azure Service Bus
Jul 23, 2026.
Design scalable .NET microservices with Azure Service Bus. Learn event-driven architecture, queues, topics, and best practices for resilient messaging.
Background Processing in ASP.NET Core: Choosing the Right Approach
Jul 23, 2026.
Master ASP.NET Core background processing! Compare BackgroundService, Hangfire, Quartz.NET, Azure Functions & Service Bus for optimal performance.
Azure DevOps vs GitHub Actions: Which CI/CD Tool Should .NET Teams Choose?
Jul 23, 2026.
Compare Azure DevOps Pipelines & GitHub Actions for .NET CI/CD. Choose the best fit for your team's workflow, ecosystem, and enterprise needs.
Secure Secrets Management in .NET with Azure Key Vault
Jul 23, 2026.
Secure your .NET apps with Azure Key Vault. Learn to manage secrets, keys, and certs centrally, avoiding hardcoding and enhancing security.
SQL Server Query Performance Troubleshooting Guide for .NET Developers
Jul 23, 2026.
Master SQL Server query performance for .NET apps. Learn to troubleshoot, optimize indexes, and write efficient queries for faster responsiveness.
Azure Container Apps vs AKS vs App Service: Which Azure Hosting Option Should You Choose?
Jul 23, 2026.
Compare Azure App Service, ACA, and AKS for .NET apps. Choose the right Azure hosting for simplicity, microservices, or Kubernetes control.
Understanding EXPLAIN FORMATTED in Databricks SQL
Jul 23, 2026.
Master Databricks SQL query optimization with EXPLAIN FORMATTED. Uncover Spark's execution plans, identify bottlenecks, and tune performance.
Entity Framework Core Performance Anti-Patterns in Production
Jul 23, 2026.
Master EF Core performance! Avoid common anti-patterns like N+1 queries, over-fetching, and client-side evaluation for faster, scalable .NET apps.
Azure Service Bus Queues vs Topics
Jul 22, 2026.
Azure Service Bus Queues vs. Topics: Understand point-to-point vs. publish-subscribe messaging for scalable, decoupled cloud apps.
Application Insights for ASP.NET Core
Jul 22, 2026.
Master Azure Application Insights for ASP.NET Core. Gain real-time insights, track performance, and troubleshoot issues effectively.
Azure AI Document Intelligence with .NET
Jul 22, 2026.
Automate document processing with Azure AI Document Intelligence and .NET. Extract data from invoices, receipts, and more, reducing manual effort.
Azure DevOps YAML Pipeline Templates
Jul 22, 2026.
Master Azure DevOps YAML Pipeline Templates for reusable CI/CD logic. Reduce duplication, boost maintainability, and standardize workflows.
Bulk Data Import in Dataverse Using Power Automate: A Scalable Approach for 25K+ Records
Jul 22, 2026.
Unlock scalable bulk data import in Dataverse with Power Automate. Efficiently handle 25K+ records using hidden system tables for seamless migrations.
PostgreSQL Table Partitioning Guide
Jul 22, 2026.
Master PostgreSQL table partitioning for efficient data management. Learn range, list, and hash strategies to boost query performance and scalability.
A Practical Guide to Document Management in Dataverse: Choosing the Right Architecture for Enterprise Power Platform Solutions
Jul 22, 2026.
Master Dataverse document management. Explore Notes, File Columns, SharePoint, and Azure Blob Storage for optimal Power Platform solutions.
SQL Server Temporal Tables Explained
Jul 22, 2026.
Master SQL Server Temporal Tables for automatic data history tracking, point-in-time recovery, and simplified auditing. Learn creation, querying, and best practices.
Azure Key Vault Best Practices
Jul 22, 2026.
Master Azure Key Vault best practices for ASP.NET Core. Securely manage secrets, keys, and certificates, enhancing application security.
Azure Cache for Redis Performance Tips
Jul 22, 2026.
Boost .NET app performance with Azure Cache for Redis. Learn tips for connection reuse, data caching, expiration, and more.
Azure API Management Best Practices
Jul 22, 2026.
Master Azure API Management best practices for secure, scalable, and maintainable APIs. Optimize security, versioning, monitoring & more.
Azure Service Bus vs RabbitMQ: Choosing the Right Message Broker
Jul 21, 2026.
Compare Azure Service Bus vs RabbitMQ. Choose the right message broker for your application's architecture, infrastructure, and operational needs.
Building Multi-Tenant ASP.NET Core Applications with Clean Architecture
Jul 21, 2026.
Master multi-tenancy in ASP.NET Core with Clean Architecture. Learn isolation strategies, tenant identification, and secure data handling for scalable SaaS.
Azure API Management Best Practices for Secure Enterprise APIs
Jul 21, 2026.
Master Azure API Management best practices for secure enterprise APIs. Learn to authenticate, validate, rate limit, and monitor for robust API security.
Understanding SHOWPLAN_ALL in SQL Server and Microsoft Fabric
Jul 21, 2026.
In this article, you'll learn hoe to master SQL Server's SHOWPLAN_ALL for query optimization. Understand execution plans, avoid pitfalls, and tune for peak performance.
Building AI-Powered Search with SQL Server and Vector Indexes
Jul 21, 2026.
Unlock AI-powered search in SQL Server 2026 with vector indexes. Discover semantic search, natural language queries, and enhanced relevance for modern applications.
SQL Server Query Store: Monitoring and Fixing Slow Queries
Jul 21, 2026.
SQL Server Query Store: Monitor, diagnose, and fix slow queries with historical data, execution plans, and performance metrics.
Azure Blob Storage Performance Optimization Techniques
Jul 21, 2026.
Optimize Azure Blob Storage performance with techniques like choosing blob types, efficient uploads, client reuse, async operations, CDNs, and tier selection.
CSS Container Queries: Building Truly Responsive Web Components
Jul 21, 2026.
Unlock truly responsive web components with CSS Container Queries. Adapt layouts to parent container size, not just viewport.
Azure Key Vault Best Practices for Managing Application Secrets
Jul 21, 2026.
Master Azure Key Vault best practices for secure application secrets management, including Managed Identity, least privilege, and CI/CD integration.
Building Event-Driven Microservices with Azure Event Grid
Jul 21, 2026.
Build scalable, loosely coupled microservices with Azure Event Grid. Learn event-driven architectures, routing, filtering, and best practices for resilient applications.
Azure Cosmos DB Change Feed Patterns for Event-Driven Applications
Jul 20, 2026.
Unlock real-time data processing with Azure Cosmos DB Change Feed. Build scalable, event-driven apps, reduce polling, and enhance responsiveness.
Azure Functions vs Azure Container Apps: Choosing the Right Serverless Platform
Jul 20, 2026.
Compare Azure Functions vs. Azure Container Apps for serverless. Choose the right platform based on workload, scalability, and deployment needs.
Azure AI Projects SDK for .NET: Building and Publishing AI Agents
Jul 20, 2026.
Build and deploy powerful AI agents with the Azure AI Projects SDK for .NET. Streamline development, integrate services, and create intelligent applications.
SQL Server Query Performance Tuning Using Execution Plans
Jul 20, 2026.
Master SQL Server query performance tuning with execution plans. Identify bottlenecks, optimize indexes, and improve database speed.
Shortest Unique Prefix for Every Word (Trie)
Jul 20, 2026.
Discover the shortest unique prefix for every word in an array using a Trie. Efficiently identify distinct word beginnings with this optimized algorithm.
Copilot in Power BI: Your AI Assistant for Faster, Smarter Reports
Jul 19, 2026.
Unlock faster, smarter Power BI reports with Copilot, your AI assistant for data analysis and report creation. Streamline workflows and get insights instantly.
JWT Session 10: Custom Authorization in ASP.NET Core: Creating Your Own Authorization Handler
Jul 19, 2026.
Master custom authorization in ASP.NET Core. Implement complex business rules beyond roles/claims with custom handlers for enhanced security.
JWT Session 8: Implementing Role-Based Authorization in ASP.NET Core Web API Using JWT
Jul 19, 2026.
Learn how to implement role-based authorization in ASP.NET Core Web API using JWT. Secure your endpoints by assigning and verifying user roles.
JWT Session 9: Policy-Based Authorization in ASP.NET Core Web API: Beyond Roles
Jul 19, 2026.
Master ASP.NET Core Policy-Based Authorization for complex business rules beyond roles. Learn to configure and apply policies for enhanced API security.
JWT Session 11: Replace Hardcoded Login with EF Core Database Authentication in ASP.NET Core Web API
Jul 19, 2026.
Replace hardcoded login with EF Core database authentication in ASP.NET Core Web API for secure user management and JWT generation.
AI Security: How AI assistants securely assess your personal data
Jul 17, 2026.
Discover how AI assistants securely access your personal data using OAuth 2.0 OBO token delegation for safe, on-behalf-of interactions.
Creating Dynamic Star KPIs in Power BI Using SVG Images and DAX
Jul 16, 2026.
Create dynamic, custom star KPIs in Power BI using DAX and SVG for visually engaging reports. Enhance data interpretation instantly.
Azure Container Apps vs Kubernetes: Architecture, Cost, and Scalability Compared
Jul 16, 2026.
Compare Azure Container Apps vs. Kubernetes: Architecture, cost, scalability, and use cases to find the best container platform for your needs.
Role of Post-Quantum Cryptography in Blockchain: Securing Decentralized Systems Against Quantum
Jul 17, 2026.
Securing blockchain against quantum threats with Post-Quantum Cryptography (PQC). Explore NIST-standardized algorithms for resilient decentralized systems.
Database Sharding Explained: Scaling Applications Beyond a Single Database
Jul 16, 2026.
Database sharding explained: Scale apps beyond single servers with this powerful technique for performance and availability.
GraphQL vs REST APIs: Which Should You Choose?
Jul 16, 2026.
GraphQL vs REST: Understand their strengths, weaknesses, and best use cases for modern API development. Choose wisely for your project.
SpiceDB Explained: Implementing Fine-Grained Authorization at Scale
Jul 16, 2026.
Learn how SpiceDB works, its relationship-based authorization model, and how to implement fine-grained access control for scalable modern applications.
SurrealDB Tutorial: Combining Relational, Document, and Graph Databases
Jul 16, 2026.
Learn how SurrealDB combines relational, document, graph, and real-time database capabilities into a single platform for modern application development.
Apache DataFusion Tutorial: Building High-Performance Query Engines in Rust
Jul 16, 2026.
Learn Apache DataFusion fundamentals, architecture, and query execution. Build high-performance analytical applications and custom query engines in Rust.
Apache Hudi Explained: Incremental Data Processing for Modern Data Lakes
Jul 16, 2026.
Learn how Apache Hudi enables incremental processing, updates, deletes, and change data capture to build scalable and efficient modern data lakes.
Part 2: Knowledge Representation and Reasoning in AI
Jul 15, 2026.
A practical explanation of classical AI foundations, including search algorithms, knowledge graphs, ontologies, rule-based systems, and why explicit programming falls short.
SeaweedFS Tutorial: Building Scalable Object Storage for Cloud-Native Applications
Jul 16, 2026.
Learn how SeaweedFS works, its architecture, deployment process, and how to build scalable object storage for cloud-native applications using open-source technology.
Apache Pinot Tutorial: Building Real-Time Analytics Applications at Scale
Jul 15, 2026.
Learn Apache Pinot with practical examples. Build real-time analytics applications using streaming data, low-latency queries, indexing, and scalable OLAP architecture.
Scaling the Enterprise AI: Out-of-Core Data Processing in Multi-Agent LangGraph RAG
Jul 14, 2026.
When a financial analyst asks, "Summarize the transaction anomalies from the last 50GB of logs and correlate them with recent customer support tickets," a standard RAG system fails. You cannot chunk 50GB into a vector database and expect an LLM to synthesize it. The LLM needs to compute over the data, not just retrieve it.
Azure Infrastructure Series #7: Azure Managed Disks: Standard HDD vs Standard SSD vs Premium SSD vs Premium SSD v2 vs Ultra Disk
Jul 15, 2026.
Storage is one of the most critical components of any virtual machine. Even the fastest CPU and largest amount of memory cannot compensate for poor disk performance. Applications such as SQL Server, SAP, enterprise ERP systems, web applications, Active Directory, and file servers all rely heavily on storage performance.
DuckDB Tutorial: Building Analytics Applications Without a Data Warehouse
Jul 15, 2026.
Learn how DuckDB enables fast analytics without a traditional data warehouse. Explore architecture, use cases, benefits, and implementation tips.
Feature Stores Explained: Managing Machine Learning Features at Scale
Jul 15, 2026.
Learn how Feature Stores help manage machine learning features at scale through centralized storage, feature serving, versioning, and MLOps integration.
Apache Iceberg Explained: Modern Data Lake Architecture for Developers
Jul 15, 2026.
Learn Apache Iceberg architecture, ACID transactions, schema evolution, time travel, and query optimization for building scalable modern data lakes.
Azure Infrastructure Series #8: Availability Sets vs Availability Zones vs Virtual Machine Scale Sets (VMSS)
Jul 15, 2026.
Designing Highly Available Azure Virtual Machines: Availability Sets vs Availability Zones vs Virtual Machine Scale Sets
Streaming the Enterprise Data Lake: Out-of-Core CSV Processing in Multi-Agent LangGraph RAG
Jul 14, 2026.
A standard RAG system fails here. You cannot chunk a 15GB CSV into a vector database—indexing 50 million raw shipping rows is computationally wasteful and semantically meaningless. Furthermore, passing 15GB to an LLM's context window is impossible.
FinOps for Developers: Optimizing Cloud Costs Through Better Architecture
Jul 15, 2026.
Learn how developers can apply FinOps principles to optimize cloud costs through better architecture, efficient resource utilization, and cost-aware cloud-native design.
Building an Enterprise Multi-Agent RAG System: Real-Time Data, State, and TTL Caching
Jul 14, 2026.
In enterprise environments, building a Retrieval-Augmented Generation (RAG) system is no longer just about querying a vector database. Modern enterprise AI requires multi-agent collaboration, persistent conversational memory, and strict state management.
KEDA Explained: Event-Driven Autoscaling for Kubernetes Applications
Jul 15, 2026.
Learn how KEDA enables event-driven autoscaling in Kubernetes, scaling workloads based on queues, events, and external metrics for efficient cloud-native applications.
OpenTelemetry Explained: Unified Observability for Modern Distributed Systems
Jul 15, 2026.
Learn how OpenTelemetry provides unified observability through traces, metrics, and logs for monitoring modern cloud-native and distributed applications.
Apache Kafka Streams Tutorial: Building Real-Time Event Processing Applications
Jul 15, 2026.
Learn Apache Kafka Streams with practical examples. Build real-time event processing applications using stream transformations, aggregations, joins, and stateful processing.
From Data Warehouse Delivery to Enterprise Intelligence Operations: How AgentFactory Governs Adoption, Deployment, and Continuous Improvement — Part 2
Jul 14, 2026.
Turning a Physically Verified Data Warehouse into a Trusted, Business-Owned Enterprise Capability Building an enterprise data warehouse is a significant achievement, but it is not the final destination. A warehouse may contain accurate dimensions, measurable business facts, historical information, reporting views, audit evidence, and reconciled source data. It may have passed technical validation and may be ready to support executive dashboards. Yet none of this guarantees that the organization is prepared to trust it, adopt it, operate it, or use it consistently in decision-making.
Data Contracts Explained: Preventing Breaking Changes in Modern Data Pipelines
Jul 15, 2026.
Learn how Data Contracts prevent breaking changes in data pipelines through schema validation, governance, ownership, and automated compatibility checks.
Apache Arrow : The Universal Memory Format for Modern Data Systems
Jul 15, 2026.
Learn Apache Arrow and how its columnar memory format enables fast analytics, zero-copy data sharing, and interoperability across modern data platforms.
Apache Flink Explained: Real-Time Stream Processing for Modern Applications
Jul 15, 2026.
Learn how Apache Flink enables real-time stream processing, event-driven applications, stateful computations, and scalable analytics for modern data platforms.
OpenSearch vs Elasticsearch: Which Search Platform Should You Choose?
Jul 15, 2026.
Compare OpenSearch and Elasticsearch to understand architecture, features, licensing, scalability, and use cases for modern search and analytics applications.
Profiling the Enterprise AI: Diagnosing Slow Data Pipelines in Multi-Agent LangGraph RAG
Jul 14, 2026.
In enterprise AI deployments, we often hit a frustrating wall: the RAG system works perfectly in development, but crawls in production. A document ingestion pipeline that processes 100 PDFs in seconds suddenly takes 10 minutes when scaled to 10,000 documents. The LLM agents are ready, but the data pipeline is the bottleneck.
Apache Airflow Tutorial: Building Production Data Pipelines
Jul 15, 2026.
Learn how Apache Airflow helps build, schedule, and monitor production data pipelines using DAGs, workflow automation, and scalable orchestration for modern data engineering.
Building an AI-Powered Knowledge Base Using Vector Databases and C#
Jul 14, 2026.
Build AI-powered knowledge bases with C# & vector databases for semantic search, understanding user intent & delivering accurate, context-aware answers.
Azure Infrastructure Series #5: Building the Foundation of Azure Networking
Jul 14, 2026.
Master Azure Virtual Networks (VNets): the foundation for secure, scalable cloud infrastructure. Learn architecture, components, connectivity & best practices.
Architecting GDPR-Compliant GenAI: An End-to-End Guide to Multi-Agent RAG with LangGraph
Jul 14, 2026.
Build GDPR-compliant GenAI RAG systems with LangGraph. Learn multi-agent RAG, state management, and real-world healthcare use cases.
Azure Infrastructure Series #4: Azure Resource Manager (ARM) – Architecture Explained
Jul 14, 2026.
Master Azure Resource Manager (ARM): the core of Azure deployments. Understand its architecture, control plane, and how it orchestrates resources.
Orchestrating Enterprise RAG ETL with Airflow Multi-Agent Integration
Jul 13, 2026.
Orchestrate enterprise RAG ETL with Airflow and multi-agent integration for a self-healing, cost-aware, and auditable system.
Building Production-Ready RAG Applications with Azure AI Search and .NET
Jul 14, 2026.
Build production-ready RAG apps with Azure AI Search & .NET. Enhance LLMs with your data for accurate, context-aware responses.
Building Multi-Tenant AI SaaS Applications with ASP.NET Core and Azure OpenAI
Jul 14, 2026.
Build scalable AI SaaS with ASP.NET Core & Azure OpenAI. Master multi-tenancy for secure, cost-effective, isolated AI services.
Secure AI APIs in ASP.NET Core with Token-Based Authorization and Rate Limiting
Jul 14, 2026.
Secure ASP.NET Core AI APIs with JWT, authorization policies, and rate limiting. Protect against abuse and manage costs effectively.
Building Event-Driven AI Agents with Azure Service Bus and .NET
Jul 14, 2026.
Build scalable, event-driven AI agents with Azure Service Bus and .NET. Automate workflows, process asynchronously, and enhance enterprise AI.
From Operational Data to Executive Intelligence: How AlpineGate AI’s AgentFactory Builds Enterprise Data Warehouses - Part 1
Jul 12, 2026.
AlpineGate AI's AgentFactory transforms fragmented data into executive intelligence, building governed enterprise data warehouses efficiently.