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]
Sandhiya Priya(37)
Nidhi Sharma(11)
Ananya Desai(10)
Saurav Kumar(10)
Riya Patel(9)
Niharika Gupta(6)
Aarav Patel(3)
Mahesh Chand(3)
John Godel(1)
Parthiv Suthar(1)
subramanya m(1)
Pushpendra Shukla(1)
Kandregula Durga Sai(1)
Ziggy Rafiq(1)
Jayraj Chhaya(1)
Sudhir Vaghela(1)
Sai Kumar Koona(1)
Mominul Islam(1)
Henil Patel(1)
Resources
No resource found
Seating Arrangement Problem
Jun 09, 2026.
Solve the Seating Arrangement Problem: Determine if k people can be seated in empty seats without adjacent occupancy using a greedy approach.
Stock Span Problem – Monotonic Stack Pattern
Jun 09, 2026.
Master the Stock Span Problem with the Monotonic Stack pattern. Efficiently find consecutive days with lower or equal stock prices in O(n) time.
Semantic Reranking in Azure AI Search: A Complete Developer Guide
Jun 09, 2026.
Unlock superior search relevance with Azure AI Search's semantic reranking. Understand intent, context, and meaning for better results.
Vector Search vs Semantic Search: Key Differences for Modern Applications
Jun 09, 2026.
Explore Vector Search vs. Semantic Search: understand their core differences, strengths, and when to use each for modern AI applications.
Building Enterprise Knowledge Bases with Azure AI Search and ASP.NET Core
Jun 09, 2026.
Build intelligent enterprise knowledge bases with Azure AI Search and ASP.NET Core. Enhance search relevance, productivity, and information access.
Understanding Hybrid Search Architecture in AI-Powered Applications
Jun 09, 2026.
Hybrid search combines keyword and vector search for AI apps, improving accuracy and user experience. Essential for RAG.
Implementing AI Memory Systems in C# Using Vector Databases
Jun 08, 2026.
Learn how to implement AI memory systems in C# using vector databases. Discover embeddings, semantic search, memory architectures, and best practices for building intelligent AI applications.
Building Secure Enterprise AI Assistants with Azure AI Foundry and .NET
Jun 08, 2026.
Learn how to build secure enterprise AI assistants using Azure AI Foundry and .NET. Explore authentication, authorization, secure RAG, audit logging, compliance, and enterprise AI security best practices.
Implementing Long-Term Memory in Enterprise AI Agents Using C#
Jun 08, 2026.
Learn how to implement long-term memory in enterprise AI agents using C#, vector databases, embeddings, and memory retrieval patterns to build intelligent and personalized AI solutions.
Building AI-Powered Internal Developer Portals with .NET Aspire
Jun 08, 2026.
Learn how to build AI-powered Internal Developer Portals using .NET Aspire, RAG, AI assistants, semantic search, and cloud-native architectures to improve developer productivity.
Find the Kth Smallest Element in a Sorted Matrix Using Binary Search on Answer
Jun 08, 2026.
A matrix search problem solved efficiently using binary search on value range and counting elements less than or equal to mid in O(n) time per step.
Count Elements Within a Range Using Sorting and Binary Search
Jun 06, 2026.
Learn how to efficiently count array elements within given ranges using sorting and binary search. Includes intuition, lower bound and upper bound concepts, complexity analysis, and Java solution.
Count Elements in a Given Range Using Sorting and Binary Search
Jun 06, 2026.
This problem involves finding the number of elements in an unsorted array that lie within a given range [a, b] for multiple queries. A naive approach would check each element for every query, resulting in high time complexity. A more efficient solution uses sorting and binary search: Sort the array to enable fast searching. For each query [a, b]: Use a lower bound search to find the first element = a. Use an upper bound search to find the first element > b. The difference between these indices gives the count of elements in the range. This approach significantly reduces time complexity to O(n log n + q log n) while keeping space usage minimal. It’s a classic example of combining sorting with binary search to handle range-based queries efficiently.
Find a Peak Element in a 2D Matrix
Jun 06, 2026.
This article explains how to find a peak element in a 2D matrix efficiently. A peak element is defined as an element that is greater than or equal to its four immediate neighbors (top, bottom, left, right). For edge and corner elements, missing neighbors are treated as negative infinity.
Lexicographically Smallest String After Removing K Characters Using a Monotonic Stack
Jun 05, 2026.
Learn how to find the lexicographically smallest string after removing K characters using a monotonic stack in Java. Includes explanation, dry run, and optimized O(n) solution.
Palindrome Pairs in an Array of Strings – Java Solution with HashMap
Jun 05, 2026.
Learn how to solve the Palindrome Pairs problem using HashMap and palindrome prefix-suffix checking. Includes intuition, dry run, complexity analysis, and optimized Java code.
Candy Problem in Java – Greedy O(n) Time and O(1) Space Solution
Jun 05, 2026.
earn how to solve the Candy problem using an optimal greedy algorithm. Includes intuition, dry run, complexity analysis, and Java solution with O(n) time and O(1) space.
Expression Contains Redundant Bracket or Not – Java Stack Solution Explained
Jun 05, 2026.
Learn how to detect redundant brackets in an expression using a stack. Includes intuition, dry run, complexity analysis, and optimized Java O(n) solution.
Next Element With Greater Frequency – Java O(n) Stack Solution
Jun 05, 2026.
Learn how to solve the Next Element With Greater Frequency problem using HashMap and Monotonic Stack. Includes intuition, dry run, complexity analysis, and optimized Java solution.
Count Subset With Target Sum II – Meet in the Middle Java Solution
Jun 05, 2026.
Learn how to solve Count Subset With Target Sum II using the Meet in the Middle technique. Includes intuition, dry run, complexity analysis, and optimized Java code.
Remove K Digits Problem – Greedy Stack Approach to Find the Smallest Number
Jun 05, 2026.
Learn how to solve the “Remove K Digits” problem using a greedy monotonic stack approach. This article explains how to efficiently remove k digits from a number string to form the smallest possible result while maintaining digit order, along with a Java implementation and clear intuition.
How to Implement Rate Limiting in ASP.NET Core Applications
Jun 05, 2026.
Learn how to implement Rate Limiting in ASP.NET Core applications using built-in middleware. Explore Fixed Window, Sliding Window, and Token Bucket strategies.
How to Build Retrieval-Augmented Generation (RAG) Applications in .NET
Jun 05, 2026.
Learn how to build Retrieval-Augmented Generation (RAG) applications in .NET using ASP.NET Core, embeddings, vector databases, and large language models.
World’s First Enterprise Humanoid Agents with AgentFactory
Jun 03, 2026.
The next generation of enterprise digital work will not be led by simple chatbots. It will be led by governed, role-based, memory-aware digital workers that can understand assignments, collaborate with other agents, communicate with people, learn from completed work, and leave behind evidence.
Feature Engineering in Machine Learning: Techniques and Examples
Jun 03, 2026.
Learn Feature Engineering in Machine Learning with practical examples. Explore feature creation, transformation, selection, encoding, scaling, and best practices.
The Future of Windows Development in an AI-First World
Jun 01, 2026.
AI is transforming Windows development! Learn how AI-first approaches, local AI processing, and intelligent automation are shaping the future of Windows apps.
Why AI Search Is Replacing Traditional Search Faster Than Expected
Jun 01, 2026.
AI search is rapidly evolving, offering faster, conversational answers and transforming how we find information. Learn how it's impacting SEO and the future of search.
Google's AI Search Era: What Developers and Content Creators Should Know
Jun 01, 2026.
Navigate Google's AI search revolution! Learn how AI Overviews, conversational search, and semantic tech impact SEO, development, and content creation. Adapt now!
How Developers Can Optimize Content for ChatGPT, Gemini, and AI Search Engines
Jun 01, 2026.
Learn how to optimize content for ChatGPT, Gemini, and AI search engines. Master GEO, semantic search, and user intent to boost visibility in AI-driven ecosystems.
RAG Is Not Enough: Advanced Retrieval Architectures Developers Should Know
May 29, 2026.
Basic RAG isn't enough for enterprise AI! Discover advanced retrieval architectures like hybrid search, re-ranking, & graph retrieval to build scalable AI systems.
How Developers Are Using Vector Databases Beyond RAG Applications
May 29, 2026.
Explore how vector databases transcend RAG, powering AI agents, recommendations, fraud detection, and more. Unlock semantic search and intelligent retrieval.
Why Developers Are Replacing Traditional Search with AI Tools
May 28, 2026.
Discover why developers are ditching Google for AI tools like ChatGPT & Copilot! Learn how AI boosts productivity with faster, personalized coding solutions. Explore the future of developer search!
LLMs.txt Explained: The Ultimate 2026 Guide to AI Search, GEO, AI Crawlers, and LLM Optimization
May 22, 2026.
Learn what LLMs.txt is, how it works, how to optimize websites for ChatGPT, Gemini, Claude, and Perplexity, and whether LLMs.txt actually improves AI visibility in 2026. Includes examples, templates, best practices, architecture, FAQs, and implementation strategies.
How to create a Power Apps Code App: Setup Guide with Hello World Example
May 21, 2026.
Discover Power Apps Code Apps! This guide shows you how to set up your first project using a code-first approach with React, TypeScript, and the Power Platform CLI. Build modern, scalable apps with ease!
Vector Databases Explained – Why They Are Important for AI Applications
May 20, 2026.
Unlock the power of AI with vector databases! Learn how they revolutionize semantic search, AI memory, and RAG, enabling intelligent applications. #AI #VectorDB
What Was Announced at Google I/O and Why It Matters for AI Developers
May 19, 2026.
Google I/O 2024 unveiled a major shift to AI-first development. Learn about Gemini, AI search, agents, and how to adapt to this rapidly evolving ecosystem.
The End of Traditional SaaS? How AI Agents Are Changing Software Products
May 15, 2026.
AI agents are revolutionizing SaaS, shifting from manual workflows to intelligent automation. Discover how AI-first architectures are reshaping software development.
Why Developers Are Switching to AI-First Development Environments
May 13, 2026.
Discover how AI-first development environments are revolutionizing software engineering, boosting productivity, and reshaping developer workflows. Embrace the AI era!
Difference Between LRU Cache and LFU Cache
May 12, 2026.
Explore the LRU vs. LFU cache algorithms! Understand their differences in eviction policies, implementation, and suitability for various applications. Optimize your cache performance now!
Building Your First Cloud-Native ASP.NET Core App on Azure (Step-by-Step)
May 06, 2026.
Build a cloud-native ASP.NET Core Web API on Azure! This step-by-step guide covers App Service, SQL Database, Blob Storage, and Application Insights. Deploy & monitor your app!
How to Implement Cosine Similarity Using Embeddings in Python Step by Step
May 04, 2026.
Master cosine similarity in Python using embeddings! Learn how to measure semantic similarity for AI applications like search and recommendations. Step-by-step guide.
Police and Thieves Problem
Apr 30, 2026.
Maximize thieves caught by policemen within distance 'k' using a greedy two-pointer approach. Optimal O(n) solution ensures the closest valid pairs are matched first.
How to Check If a Stored Procedure Exists in SQL Server
Apr 29, 2026.
A comprehensive guide explaining how to check whether a stored procedure exists in SQL Server using multiple methods such as INFORMATION_SCHEMA, sys.procedures, OBJECT_ID, and SSMS UI. The article also highlights practical use cases, best practices, and common issues developers face while validating stored procedures across different environments like development and production.
Smallest Window Containing ‘0’, ‘1’, and ‘2’
Apr 27, 2026.
Master the Sliding Window technique! This guide solves the 'Smallest Window Containing 0, 1, and 2' problem with clear explanations, examples, and Java code. Find the shortest substring efficiently!
Buildings with Sunlight
Apr 27, 2026.
Find buildings visible to sunlight using a greedy algorithm! This problem focuses on array traversal, tracking maximums, and handling edge cases like equal heights. A common interview question!
Opposite Sign Pair Reduction
Apr 27, 2026.
Master the 'Opposite Sign Pair Reduction' problem! Learn how to efficiently reduce an array using a stack-based approach, simulating collisions. Includes Java code & complexity analysis.
Number of BSTs From Array
Apr 27, 2026.
Calculate the number of unique Binary Search Trees (BSTs) possible for each element in an array as the root. Leverages Catalan numbers for efficient computation.
Rotten Oranges Problem
Apr 27, 2026.
Solve the Rotten Oranges problem using multi-source BFS! Find the minimum time to rot all fresh oranges in a grid. Learn the BFS approach with Java code and complexity analysis.
Chocolates Pickup (Two Robots Problem)
Apr 27, 2026.
Solve the classic 'Chocolates Pickup' problem with 3D Dynamic Programming! Maximize chocolate collection by two robots moving simultaneously. Java solution included.
Articulation Point (Cut Vertex)
Apr 27, 2026.
Master Tarjan's Algorithm to find articulation points (cut vertices) in undirected graphs! Learn to identify critical nodes that disconnect a graph. Includes Java code!
Partitions with Given Difference
Apr 27, 2026.
Solve partition problems by transforming them into subset sum problems! This DP approach efficiently counts subsets with a specific difference. Learn the key formula!
Form the Largest Number
Apr 27, 2026.
Master the largest number problem! Learn how to use custom comparators and greedy algorithms to arrange integers for maximum value. Perfect for coding interviews!
Find H-Index
Apr 27, 2026.
Master the H-Index problem with this guide! Learn the sorting approach to efficiently find the maximum H-index, balancing paper quantity and citations. Includes Java code!
Stream First Non-Repeating Character
Apr 27, 2026.
Solve the streaming first non-repeating character problem using a queue and frequency array. Learn the algorithm, Java code, complexity, and key takeaways for interviews.
Max Sum Subarray of Size K
Apr 27, 2026.
Master the sliding window technique to find the maximum sum subarray of size K. This guide provides a clear explanation, Java code, and complexity analysis.
Count Distinct Elements in Every Window
Apr 27, 2026.
Master the sliding window technique! Learn how to efficiently count distinct elements in every window of an array using a HashMap. Java solution and complexity analysis included.
Build Your First AI Chatbot in C#
Apr 24, 2026.
Build an AI chatbot in C# using OpenAI! This tutorial covers multi-turn conversations, streaming responses, error handling, and a console UI. Elevate your .NET skills now!
Split Array into Two Equal Sum Subarrays
Apr 23, 2026.
Learn how to efficiently determine if an array can be split into two contiguous subarrays with equal sums using the prefix sum technique. Optimal O(n) solution!
Mean of Range in Array Using Prefix Sum
Apr 22, 2026.
Using the Prefix Sum technique, we can efficiently solve range-based problems like finding the mean of subarrays. This approach is simple, fast, and highly scalable.
Buy Stock with Transaction Fee
Apr 22, 2026.
Learn how to maximize profit in stock trading when a transaction fee is applied to each trade. This article explains an optimized O(n) dynamic programming approach using two states—buy (hold) and sell (cash)—to efficiently track profit across multiple transactions. Includes a clear Java implementation, step-by-step explanation, and practical insights for coding interviews and real-world problem solving.
Number of Ways to Arrive at Destination
Apr 22, 2026.
Master Dijkstra's Algorithm to find the shortest path and count unique routes to a destination in a weighted graph. Includes Java code and complexity analysis.
How to implement full-text search in SQL Server with example
Apr 22, 2026.
Step-by-Step Implementation with Example
Solving the Two Water Jug Problem in Java
Apr 21, 2026.
A complete guide to solving the Two Water Jug problem in Java. Learn how to calculate the minimum number of operations to measure a specific amount of water using two jugs, including code explanation, execution steps, and sample outputs.
How to Implement K-Nearest Neighbors (KNN) Algorithm Step by Step
Apr 21, 2026.
Learn how to implement K-Nearest Neighbors (KNN) algorithm step by step with simple explanation, examples, Python code, and best practices for machine learning beginners.
Flip to Maximize 1s in an Array
Apr 21, 2026.
Learn how to solve the Flip to Maximize 1s problem in Java. This article explains step-by-step how to find the maximum number of 1s in a binary array after flipping at most one subarray, including code explanation, execution, and examples.
What is Rate Limiting Algorithm (Token Bucket vs Leaky Bucket) and How Do They Work?
Apr 21, 2026.
Learn what rate limiting algorithms are, including Token Bucket vs Leaky Bucket, how they work, differences, use cases, and best practices for web applications.
Check if a Number is a Power of Another Number in Java
Apr 21, 2026.
Learn how to determine if a number y is a power of another number x in Java. This article explains the step-by-step logic, edge cases, Java code implementation, and example outputs for the “Check for Power” problem.
Remove Spaces from a String (Java)
Apr 21, 2026.
Learn how to remove all spaces from a given string in Java while preserving the order of characters. This article explains a simple O(n) solution using StringBuilder, along with step-by-step logic and examples.
Toeplitz Matrix Check in Java
Apr 21, 2026.
Learn how to check whether a given matrix is a Toeplitz matrix in Java. This article explains the diagonal-constant property, step-by-step logic, code implementation, and examples with output for better understanding.
What is Cosine Similarity and How is it Used in Vector Search?
Apr 17, 2026.
Discover Cosine Similarity: a key technique for measuring vector similarity in search engines, recommendation systems, and AI. Learn how it works and its applications!
How to Build a Document Q&A System Using RAG and Vector Database
Apr 16, 2026.
Build a powerful document Q&A system using RAG and vector databases! Learn step-by-step how to implement semantic search and AI-powered answers from your data.
What is Embedding Similarity Search and How Does It Work in AI?
Apr 16, 2026.
Unlock semantic search with embedding similarity! Learn how AI understands meaning, not just keywords, using vectors, databases, and similarity algorithms. Powering chatbots & RAG.
Getting Started with RAG in C# 14: Build Your First AI Knowledge
Apr 14, 2026.
This project demonstrates document retrieval by Ziggy Rafiq, context building, and AI-powered responses using clean architecture and enterprise best practices using C# 14 and ASP.NET Core.
What is Retrieval Pipeline in RAG Architecture Step by Step
Apr 15, 2026.
Unlock the power of RAG! This guide breaks down the retrieval pipeline step-by-step, from query to response, enhancing AI accuracy and reducing hallucinations. Learn how to build better AI!
How to Store and Query Embeddings Using Vector Databases
Apr 15, 2026.
Learn how to use vector databases to store and query embeddings for AI applications. Unlock semantic search and RAG pipelines for intelligent systems.
How to Build a Semantic Search Engine Using Vector Embeddings
Apr 14, 2026.
Build a semantic search engine using vector embeddings! Learn to understand search intent, improve accuracy, and deliver relevant results beyond keywords.
What is Progressive Web App (PWA) and How to Build One
Apr 14, 2026.
Discover Progressive Web Apps (PWAs): build fast, reliable, and installable web experiences. Learn PWA features, benefits, and a step-by-step guide to create your own!
Types of RAG in n8n (Complete Guide with Real Examples)
Apr 13, 2026.
Master Retrieval-Augmented Generation (RAG) in n8n with this practical guide. Learn Naive, Advanced, Adaptive, Multi-Agent, Hybrid, and Self-Reflective RAG with real-world examples. Build powerful AI workflows, improve accuracy, and create scalable automation using vector databases, embeddings, and LLMs
PnP Modern Search Results – Part 2: Custom Layouts with Handlebars (Beginner to Practical)
Apr 11, 2026.
Customize PnP Modern Search results with Handlebars! Learn to create dynamic layouts, bind data, and use @root for global data access. Beginner-friendly tutorial.
Difference Between Dapper and Entity Framework Core and Which One Should You Use?
Apr 10, 2026.
Explore Dapper vs. Entity Framework Core in .NET for data access. Discover which ORM suits your needs based on performance, control, and development speed. Learn when to use each, or both!
How to Implement Vector Search in C# with Azure AI or Qdrant
Apr 09, 2026.
Unlock semantic search in C#! This guide explores vector search implementation using Azure AI Search and Qdrant. Build smarter apps with AI-powered features.
Building Your First AI Agent: Connecting Semantic Kernel to Real Data in .NET
Apr 09, 2026.
Build your first .NET AI Agent using Semantic Kernel! Connect LLMs to real data with plugins. Learn to query a mock database for inventory levels automatically.
Difference Between Code First and Database First Approach in Entity Framework Core?
Apr 08, 2026.
Explore the Code First vs. Database First approaches in Entity Framework Core. Learn which method suits new projects and legacy systems for efficient .NET development.
How to Implement Retrieval-Augmented Generation (RAG) in C# Using Azure AI Search
Apr 08, 2026.
Build intelligent C# .NET apps with Retrieval-Augmented Generation (RAG) using Azure AI Search. Learn to combine your data with AI for accurate, up-to-date responses.
What Is Blazor and How to Build Your First Web App Using C# Instead of JavaScript?
Apr 07, 2026.
Discover Blazor, Microsoft's innovative web framework! Build interactive web apps using C# instead of JavaScript. Simplify full-stack development and boost productivity with .NET.
What Is Power BI and How to Create Your First Dashboard Step by Step?
Apr 07, 2026.
Learn Power BI! This guide simplifies creating interactive dashboards from raw data. Transform data, visualize insights, and make data-driven decisions easily.
How to Write Your First Program in Go and Understand Its Basic Syntax
Apr 07, 2026.
Learn Go programming! This beginner-friendly guide covers installation, basic syntax, and writing your first program. Build a strong foundation in Go development.
Difference Between Go and Rust and Which One Should You Learn First?
Apr 07, 2026.
Go vs Rust: A comprehensive comparison for beginners and experienced developers. Explore syntax, performance, use cases, and learning curves to make the right choice.
How to Create and Run Your First Docker Container Step by Step for Beginners?
Apr 07, 2026.
Learn Docker step-by-step! This beginner's guide covers installation, image pulling, running containers, Dockerfile creation, and common mistakes. Deploy apps easily!
What Is AI-Native?
Apr 05, 2026.
AI-native is here! Learn how to adopt this mindset, where AI is your default for work, thinking, and building. Stay ahead in the evolving market.
How to Create Your First Web API Using ASP.NET Core?
Apr 06, 2026.
Learn to build your first Web API with ASP.NET Core! This beginner-friendly guide covers setup, controllers, HTTP methods, and dependency injection for backend development.
How to Build Your First Angular Application Step by Step?
Apr 06, 2026.
Learn to build your first Angular application step-by-step! This beginner-friendly guide covers components, data binding, routing, and best practices for modern web apps.
How to Design a One-to-Many Relationship in SQL Server
Apr 06, 2026.
Master SQL Server one-to-many relationships! Learn to design databases with foreign keys, ensuring data integrity and efficient querying. Includes examples & best practices.
How to Build Your First Flutter App From Scratch Step by Step?
Apr 06, 2026.
Build your first Flutter app from scratch! This beginner-friendly guide covers installation, project setup, widgets, and more. Create cross-platform apps easily!
Difference Between Zero-Shot, One-Shot, and Few-Shot Prompting?
Apr 06, 2026.
Unlock the power of AI prompting! Learn the differences between zero-shot, one-shot, and few-shot prompting techniques for optimal AI results. Master prompt engineering!
What Is Unit Testing and How to Write Your First Unit Test in C#?
Apr 06, 2026.
Master C# unit testing! This beginner's guide covers the basics, AAA pattern, frameworks (MSTest, NUnit, xUnit), best practices, and common mistakes. Build reliable .NET apps!
Install Ollama & Run Your First Local AI Model: Complete Hands-On Guide
Apr 06, 2026.
Install Ollama & Run Your First Local AI Model: Complete Hands-On Guide From downloading Ollama to making your first live API call — every command, every config file, every error fix, every model explained. Windows and Linux. GPU and CPU. This is your complete Day 1 local AI setup guide.
How to Become AI-Native: A Practical Guide
Apr 04, 2026.
Learn how to become AI-native with a step-by-step guide, mindset shifts, and practical strategies to stay ahead in the AI-driven world.
How to Search More Than 2000 Records in PowerApps Combo Box
Apr 03, 2026.
Overcome the 2000-record limit in PowerApps Combo Boxes! This guide provides a simple trick to efficiently search large datasets and ensure all records are searchable. Improve PowerApps search functionality!
How to Use Entity Framework Core Code First Approach in ASP.NET Core
Apr 03, 2026.
Learn how to use the Entity Framework Core Code First approach in ASP.NET Core to build scalable applications. Define your database structure with C# classes and migrations.