Skip to content

Glossary

Terms used in the answers. In the text they have a dotted underline and open on tap.

.editorconfig

A settings file in the repository shared by the IDE and the build: indentation, code style and analyzer rule severities (dotnet_diagnostic.CA2016.severity = error). It applies to its folder and the folders below.

.NET Core (modern .NET)

The cross-platform, open-source .NET implementation, first released in 2016. Since version 5 it is simply called .NET and ships every November.

.NET Framework

The original Windows-only .NET implementation, shipped as part of the OS. The last version is 4.8.1; it is supported as long as Windows is, but gets no new features.

.NET Hosting Bundle

An installer for Windows servers with IIS: it installs the .NET runtime, ASP.NET Core and the ASP.NET Core Module. Without it IIS can't run ASP.NET Core apps.

.NET memory model

The rules for which reorderings of reads and writes the compiler, JIT and CPU may perform, and what other threads observe. It is described in the Memory-model.md spec in the dotnet/runtime repository.

.NET SDK

The development kit: compiler, MSBuild, templates and the dotnet command with build, test and publish. The runtime alone only runs a built app, and the SDK version for a repository is pinned in global.json.

.NET Standard

A formal specification of APIs available across several .NET implementations. The last version is 2.1; netstandard2.0 is the last one .NET Framework supports.

@defer block (deferrable views)

A template block whose code is loaded as a separate chunk on a trigger: entering the viewport, browser idle time, user interaction. The @placeholder and @loading blocks show a stand-in. Introduced in Angular 17.

ABAC (attribute-based access control)

A model where a rule over attributes of the subject, object, operation and environment — department, classification, time, network — makes the decision. Described in NIST SP 800-162.

Absolute expiration

The entry is removed from the cache at a set moment or a set time after it was added, no matter how often it is read.

Abstract class

A class marked abstract: you cannot create an instance of it, only inherit from it. It can contain fields, constructors, ready-made methods and abstract members without a body that a derived class must implement.

Abstract Factory

A creational pattern: an interface with methods for creating a whole family of matching objects without naming their concrete classes. An example in .NET is DbProviderFactory.

Abstraction

An OOP principle: only the contract that matters to the client is visible — what the object can do, not how it does it. In C# abstractions are defined by interfaces and abstract classes.

Accelerated database recovery (ADR)

A SQL Server 2019+ feature that keeps row versions inside the database itself. Rollback and crash recovery become almost instant, and the log can be truncated even during long transactions.

Access review

A regular check of granted permissions: a manager or resource owner confirms that the access is still needed or revokes it. Also called recertification or attestation.

Access token

The token a client uses to call an API. It is addressed to the resource server and limited by scopes, audience and a short lifetime.

Accessibility tree

A structure the browser builds from the DOM for assistive technologies: every node has a role, an accessible name, a description and a state.

Accidental complexity

Complexity introduced by the solution rather than the problem: extra layers, abstractions, tools. Contrasted with essential complexity in Fred Brooks's essay "No Silver Bullet" (1986).

ACID

The four properties of a transaction: atomicity (all or nothing), consistency (constraints hold), isolation (concurrent transactions don't see intermediate states) and durability (committed data survives a crash).

Acquire/release semantics

Ordering for a pair of operations: after an acquire read, later accesses do not run before it, and before a release write, earlier accesses are not delayed past it. Volatile.Read and Volatile.Write work this way.

Action (action method)

A public controller method that handles a request for a route. It returns an IActionResult, such as a view, a redirect or JSON.

Action (React 19)

An async function run inside a transition, for example one passed to <form action>. React tracks its pending state and errors and supports optimistic updates.

ActivatorUtilities

A helper class that creates an object of an unregistered type, taking constructor arguments from an IServiceProvider. The calling code, not the container, owns the created object.

Active Directory (AD)

Microsoft's directory service: it stores user and computer accounts, groups and domain policies. Domain controllers verify passwords and issue Kerberos tickets.

Activity

The .NET type for one step (span) of a distributed trace: name, timing, tags, TraceId and SpanId. The current span is available as Activity.Current; spans are created through ActivitySource.

Ad hoc polymorphism

Different behavior for different types through separate implementations sharing one name: method and operator overloading. The compiler picks the version by the static argument types.

Adapter

A structural pattern: a wrapper implements the interface the client expects and translates calls into the API of another object with an incompatible interface.

ADFS (Active Directory Federation Services)

A Windows Server role acting as a security token service: it verifies users against AD and issues applications signed tokens over WS-Federation, SAML 2.0 or OpenID Connect. Microsoft recommends moving from it to Microsoft Entra ID.

Adjacency list

A way to store a graph: for each vertex, a list of its neighbours — in C# usually a Dictionary<T, List<T>>. It takes O(V + E) memory and suits sparse graphs.

ADO (dbGo)

Delphi's TADOConnection, TADOQuery and TADOStoredProc components on top of the Microsoft ActiveX Data Objects COM library. They reach SQL Server through an OLE DB provider.

ADO.NET

The base data access API in .NET: DbConnection, DbCommand, DbDataReader, parameters and transactions. Providers such as Microsoft.Data.SqlClient and Npgsql are built on it, and EF Core and Dapper sit on top.

Aggregate

A cluster of related objects changed as a single unit through its root. An aggregate is a consistency boundary: its invariants hold after every transaction.

Aggregate function

A function that collapses a set of rows into one value: COUNT, SUM, AVG, MIN, MAX. All of them except COUNT(*) skip NULL.

AggregateException

A container exception for several errors. .Wait() and .Result wrap a task's exceptions in it, while await rethrows the original exception unwrapped.

Alembic

The schema migration tool for SQLAlchemy from the same authors. It stores migrations as Python files and the applied version in the alembic_version table.

Alembic revision

A migration file with a revision identifier, a down_revision link to its parent and upgrade() and downgrade() functions. Revisions form a graph of schema versions.

Algorithm confusion

An attack where the attacker changes alg in the header: to none, or from RS256 to HS256, signing the token with the public key as an HMAC secret. The defense is a fixed set of algorithms bound to the key.

Aligned index

An index partitioned the same way as its table: the same partition function, or one with the same boundaries and column. Partition switching works only with aligned indexes.

Always On availability group

SQL Server's high-availability feature: the primary replica ships the log to secondaries, and on failure one of them becomes the primary. In Enterprise the secondaries can be opened for reads.

Amortized complexity

The average cost of an operation over a long series of calls. List<T>.Add sometimes copies the whole array in O(n) but costs O(1) on average, because capacity grows by doubling.

Anemic domain model

A model where entities are just data with properties and all logic and checks live in services. Fowler calls it an anti-pattern; it is unrelated to choosing a layered or clean architecture.

Angular component

A TypeScript class with the @Component decorator, an HTML template and styles. The basic building block of the UI: an app is a tree of components nested through their templates.

Angular directive

A class with the @Directive decorator that adds behavior to an existing element, for example by changing its classes or attributes. A component is a directive with its own template.

Anonymous method

A nameless procedure or function that can be assigned to a reference to procedure variable or passed as a parameter. It is a closure: it captures outer variables (not values) and extends their lifetime. Introduced in Delphi 2009.

Anti join (anti semi join)

A join that returns rows of the left table that have no match on the right. In SQL it is written with NOT EXISTS; NOT IN gives the same result only when the subquery has no NULL.

Anti-corruption layer

A translation layer between your model and an external or legacy system. It converts foreign models, codes and errors so they don't spread through your code.

Anti-pattern

A frequently repeated solution that seems reasonable but does more harm than good, and for which a better replacement is known.

Antiforgery token

A pair of linked tokens: one in a cookie, the other in a hidden form field or a header. The server compares them, and a request from another site that doesn't know the field value is rejected.

Apache Kafka

A broker built on a distributed log: messages go into topic partitions and are kept for a retention period, while consumers read by offset and can replay. Ordering is guaranteed within a partition, not across the topic.

API (application programming interface)

The contract one program calls another through: a set of operations with their parameters, responses and errors. The contract matters more than the implementation — a breaking change breaks every consumer at once, which is why APIs are versioned.

API gateway

A single entry point in front of a set of services: it routes requests, checks authentication, rate-limits and aggregates responses. In .NET gateways are often built on YARP.

API versioning

Supporting several versions of a contract at once so breaking changes do not affect existing clients. The version is passed in the path, a query parameter, a header or the media type.

APM (application performance monitoring)

Monitoring application performance by collecting traces, metrics and errors tied to requests. Examples are Elastic APM, Application Insights and Datadog.

App pool recycling

A scheduled or forced restart of an IIS worker process: on a schedule, on a memory limit, or on a configuration change. By default the new process starts before the old one stops (overlapped recycle).

App Router

The Next.js router based on the app/ folder: folders define URL segments, page.tsx a page, layout.tsx a shared shell. It is built on React Server Components.

AppDomain (application domain)

An isolated area inside a .NET Framework process for loading and unloading code. Modern .NET cannot create extra domains; use processes for isolation and AssemblyLoadContext for plugins.

Application builder

The Angular CLI builder based on esbuild, with a Vite dev server; the default for new projects since v17. It replaces the Webpack builders, which were deprecated in v22.

APPLY operator (CROSS APPLY, OUTER APPLY)

A T-SQL operator that evaluates the table expression on the right for each row on the left, and that expression may reference the row's columns. CROSS APPLY drops rows with an empty result, OUTER APPLY keeps them with NULL; the PostgreSQL counterpart is LATERAL.

ARC in Delphi (Automatic Reference Counting)

A model in which objects, like strings, were freed by reference counting. Delphi's mobile compilers used it, as did the Linux compiler from 10.2 Tokyo; 10.4 Sydney removed it for objects on all platforms.

Architecture test

An automated test that checks dependency rules in code: for example, that the domain does not reference EF Core and one module does not reach into another's internals. In .NET they are written with NetArchTest or ArchUnitNET.

Arrange-Act-Assert (AAA)

A three-step test layout: set up objects and data, perform the action under test, check the result. It keeps the test readable and separates the action from the checks.

Array DML

Executing one parameterized command with arrays of parameter values: the DBMS runs it for each row of the array while the client talks to the server once. In FireDAC — Params.ArraySize and Execute.

ArrayPool<T>

A pool of reusable arrays: Rent hands out an array at least as long as requested, and Return gives it back. It reduces buffer allocations; after Return the array must not be used.

Arrow function

A short function syntax, (x) => x * 2. It has no this, arguments or super of its own — it takes them from the enclosing scope — and cannot be called with new.

AS2 (Applicability Statement 2)

A protocol for sending EDI documents over HTTP with S/MIME signing and encryption and a signed delivery receipt (MDN). Defined in RFC 4130.

ASGI

Asynchronous Server Gateway Interface — the standard that connects an async web server to a Python application. The application is a coroutine the server calls for each connection.

ASP.NET Core Module (ANCM)

A native IIS module that runs an ASP.NET Core app inside the w3wp.exe worker process (in-process) or as a separate process with Kestrel (out-of-process). It is installed with the .NET Hosting Bundle.

Aspire (formerly .NET Aspire)

A Microsoft platform for local orchestration and observability of distributed apps. The topology is described in code in an AppHost; Aspire starts the services, wires connection strings and adds a dashboard.

Assembly

A .dll or .exe file with IL code, metadata and a manifest. The unit of deployment, versioning and code loading in .NET.

AssemblyLoadContext

An assembly loading context in .NET: one context holds one version of an assembly with a given name. Separate contexts let you load different versions and unload plugins.

Assertion rewriting

Rewriting of assert statements when test modules are imported. Thanks to it, pytest shows the values of both sides of a failed comparison without special assertion methods.

Asymptotic complexity (Big O)

An estimate of how an operation's time or memory grows with the number of items n. O(1) does not depend on n, O(log n) grows very slowly, O(n) grows in proportion to n.

async pipe

A template pipe that subscribes to an Observable or Promise, returns the latest value and unsubscribes when the component is destroyed. It also calls markForCheck(), so it works with OnPush.

Async stream

An IAsyncEnumerable<T> sequence whose items arrive asynchronously. It is produced by an async method with yield return and consumed with await foreach; introduced in C# 8.

async void

An asynchronous method that returns void instead of Task. It cannot be awaited, and an unhandled exception goes to the SynchronizationContext or the thread pool and can terminate the process.

async/await

A pair of C# keywords: async marks a method the compiler rewrites into a state machine, and await suspends it until the result is ready, returning control to the caller. The thread is not blocked while waiting — the continuation runs once the operation completes.

Asynchronous request-reply

A pattern for long-running operations over HTTP: the server immediately returns 202 Accepted with a status URL, and the client polls it or gets notified when the result is ready.

asyncio event loop

The single-threaded asyncio scheduler: it runs ready tasks until their next await, then asks the OS which I/O has completed. Started with asyncio.run().

asyncio Task

A wrapper that schedules a coroutine on the event loop and runs it independently of the caller. Created with asyncio.create_task(); the loop keeps only weak references to tasks.

AsyncLocalStorage

A Node.js class from node:async_hooks that stores data available throughout the chain of asynchronous calls of one request. The counterpart of AsyncLocal<T> in .NET; NestJS apps use it to pass the user and request id without request scope.

At-least-once

A delivery or execution guarantee under which work is never lost but may run again after a failure. The handler has to be idempotent.

At-most-once

A delivery guarantee where a message is never processed twice but may be lost. You get it by acknowledging a message before processing it.

Atomic operation

An operation that happens all at once: other threads see either the state before it or after it, never in between. In .NET, reads and writes of aligned values up to pointer size and Interlocked methods are atomic.

Audience

The aud claim: which recipient the token was issued for. An API must reject tokens with a different audience, otherwise a token for one service would work against another.

Authentication

Establishing who is making the request: by password, certificate, Windows account or token. In ASP.NET Core the result is a ClaimsPrincipal in HttpContext.User.

Authentication scheme

A named registration of an authentication handler in ASP.NET Core: Cookies, OpenIdConnect, Bearer. The scheme defines how to authenticate a request, issue a challenge, sign in and sign out.

Authorization

Deciding what an already identified user may do: which endpoint to call, which document to open. Refusing a signed-in user is 403, refusing an anonymous one is 401.

Authorization code flow

The OAuth flow in which the browser receives a one-time code and the client exchanges it for tokens in a direct request to /token. The main flow for user sign-in.

Authorization handler

An IAuthorizationHandler implementation, usually derived from AuthorizationHandler<TRequirement>, that checks a requirement and calls context.Succeed or context.Fail. Registered in DI; one requirement can have several handlers.

Authorization policy

A named set of requirements in ASP.NET Core. It is registered with AddAuthorizationBuilder().AddPolicy, applied with [Authorize(Policy = "...")] or RequireAuthorization, and succeeds when all its requirements succeed.

Authorization requirement

A class with the IAuthorizationRequirement marker interface that describes a rule and its parameters, such as a required permission or a minimum age. Handlers do the actual check.

Authorization server

The service that authenticates the user and issues tokens: Keycloak, Microsoft Entra ID, ADFS, Duende IdentityServer. In OIDC terms it is the OpenID Provider.

auto_explain

A PostgreSQL module that automatically logs the plans of queries running longer than a threshold (auto_explain.log_min_duration). It lets you see the plan of a slow production query without running it by hand.

Autocommit

A mode in which every statement is its own transaction and is committed right after it runs. The default mode in SQL Server, SqlClient and PostgreSQL.

Autofac

A popular third-party DI container for .NET. It plugs into ASP.NET Core through UseServiceProviderFactory and adds modules, decorators, property injection and tagged scopes.

AutoFixture

A library that generates test data: it creates objects with populated properties so the test sets only the values that matter to it. Extensions supply NSubstitute or Moq doubles and pass data into test parameters.

Autogenerate (Alembic)

The alembic revision --autogenerate mode, which compares the models' MetaData with the database schema and writes a draft migration. It does not detect renames or unnamed constraints.

Awaiter

The object returned by GetAwaiter() that await works through. It exposes IsCompleted, OnCompleted and GetResult.

Azure SignalR Service

A managed Azure service that accepts SignalR client connections instead of your server and relays messages. It removes the need for sticky sessions and a backplane.

B-tree (B+ tree)

A balanced tree of pages in which SQL Server stores regular (rowstore) indexes: root, intermediate levels and leaves. Every leaf is the same distance from the root, so a key lookup costs a few page reads even in a huge table.

Back-of-the-envelope estimate

A quick order-of-magnitude calculation from assumptions: requests per second, data volume, traffic, cache memory. The goal is the right order of magnitude, not a precise percentage.

Backends for Frontends (BFF)

Sam Newman's pattern: a separate backend for each client type — web, mobile app — that aggregates service calls and shapes responses for that client. It is owned by the client's team.

Backfill

Filling a new column or table with historical data after it has been added. On large tables it runs in batches so that transactions stay short.

Background GC

A generation 2 collection on a dedicated thread that runs concurrently with the app; ephemeral GCs still happen as usual in the meantime. On by default.

BackgroundService

A base class for long-running background work in a .NET host: the logic goes into ExecuteAsync, and it is registered with AddHostedService, that is, as a singleton.

Backpressure

A mechanism where an overloaded consumer slows the producer down instead of piling work up in memory. With channels, a bounded channel in Wait mode provides it.

base64url

A base64 variant for URLs and headers: - and _ instead of + and /, with no = padding. It is encoding, not encryption: anyone can decode the string.

Batch mode

An execution mode in which an operator processes a batch of rows at a time instead of one row. The native mode for columnstore; since SQL Server 2019 at compatibility level 150 it is also available for regular tables.

Bearer token

An access token, usually a JWT, that the client sends in the Authorization: Bearer ... header. The browser doesn't attach it by itself, so CSRF doesn't apply to it.

Behavioral pattern

A pattern that distributes responsibilities between objects and describes how they interact. GoF lists eleven, including Strategy, Observer, Command, Iterator and Template Method.

BenchmarkDotNet

A .NET microbenchmarking library: warmup, statistics, comparison across runtimes. [MemoryDiagnoser] shows allocations per operation, and [DisassemblyDiagnoser] shows the machine code produced by the JIT.

BFF (Backend for Frontend)

The SPA's server side on the same site: it signs in via OIDC as a confidential client, keeps the tokens and proxies API calls, giving the browser only an HttpOnly cookie.

Big Ball of Mud

A system with no discernible architecture that grew out of expedient decisions. Described by Brian Foote and Joseph Yoder in 1997.

Binary heap

A tree stored in an array where every parent is no larger than its children, so the minimum is at the root. Insert and extract-min are O(log n). In .NET, PriorityQueue<TElement, TPriority> is built on a heap.

Binary search tree

A tree in which every node's left subtree holds smaller keys and its right subtree larger ones. Lookup, insert and delete cost O(height): O(log n) for a balanced tree and O(n) for a degenerate one.

Binding redirect

A setting in a .NET Framework app's app.config that redirects requests for some versions of an assembly to another version. Not used in modern .NET.

Blameless postmortem

An incident review without looking for someone to blame: timeline, impact, causes and action items with owners. It asks why the system and processes allowed the mistake to happen.

Blazor

The ASP.NET Core model where the UI is written in C# as Razor components. Blazor Server keeps state on the server and ships events over SignalR, Blazor WebAssembly runs the code in the browser, and since .NET 8 the render mode is chosen per component.

Bloat

Space in a table or index occupied by dead versions and the gaps they leave. Queries read extra pages; plain VACUUM reuses the space but does not return it to the OS.

BlockingCollection

A synchronous thread-safe queue with an optional capacity: Add and Take block the thread when the queue is full or empty. It wraps a ConcurrentQueue by default.

Blue-green deployment

A strategy with two full copies of the environment: the new version is deployed next to the old one with no traffic, passes checks, and the load balancer switches to it. The old copy stays for an instant rollback.

Bounded context

A boundary inside which a model and its terms have one meaning. A "product" in the warehouse and in the catalog are different models in different contexts; a context is a natural candidate for a module or a service.

Box model

The way CSS treats every element as a rectangle of content, padding, border and margin. What width includes is set by box-sizing.

Boxing

Copying a value-type value into a new heap object so it can be treated as object or an interface. The reverse operation is unboxing.

Branch

A movable pointer to a commit. A new commit automatically moves the current branch to it, so creating a branch means writing one hash, not copying files.

Branch protection

Repository settings that block merging into a branch such as main until the required pipeline checks pass and reviewers approve. In GitHub these are protected branches and rulesets.

Breadth-first search (BFS)

Graph traversal level by level using a queue: first all neighbours, then neighbours of neighbours. Finds the shortest path by edge count in an unweighted graph in O(V + E).

Breaking change

A contract change after which an existing client stops working: removing or renaming a field, changing a type, a new required parameter, a different meaning of a status code.

BRIN index

A Block Range Index: stores the minimum and maximum for each group of adjacent table pages. Very small, but useful only when values correlate with the physical row order, like timestamps in a log.

Broken access control

A user reads or changes what they shouldn't: someone else's orders, admin functions. The first category of the OWASP Top 10 in both the 2021 and 2025 editions.

Build artifact

The pipeline output that gets stored and deployed: an archive of dotnet publish output, a NuGet package or a container image. It is built once and promoted through environments without rebuilding.

Builder

A creational pattern: a complex object is assembled through step-by-step calls on a separate builder object, and a final Build method validates the data and returns the result.

Built-in control flow (@if, @for, @switch)

Angular 17+ template syntax for conditions and loops that replaces the *ngIf, *ngFor and ngSwitch directives. @for requires track and has an @empty block; the old directives are deprecated since v20.

Bulkhead

Isolating resources per dependency: capping concurrent calls to one dependency so that if it hangs it cannot take all threads and connections. In Polly v8 this is a concurrency limiter.

Burn rate

How many times faster than allowed a service consumes its error budget: the error rate divided by 1 − SLO. At a burn rate of 1 the budget runs out exactly at the end of the SLO window.

C extension (extension module)

A module written in C, C++ or Rust against the Python C API and loaded like a regular module. It runs outside the bytecode interpreter and can release the GIL — this is how NumPy and many ML libraries work.

Cache invalidation

Removing cache entries or marking them stale when the underlying data changes: by lifetime, by key, by tag or by event.

Cache stampede

A situation where a popular entry disappears from the cache and many requests recompute it from the source at the same time. The source gets a load spike and may fall over.

Cache tags

Labels attached to cache entries so a whole group can be cleared with one call: EvictByTagAsync in output cache, RemoveByTagAsync in HybridCache.

Cache-aside

A pattern in which the app itself reads the cache, loads data from the source on a miss and stores it in the cache, and deletes the key when the data changes.

Cache-Control

An HTTP header with caching directives: public, private, max-age, no-cache, no-store. The client sets it on requests, the server on responses.

Cached updates

A mode in which record changes accumulate in a client-side log and are sent to the database in one ApplyUpdates call instead of on every Post.

Call stack

A thread's memory where every method call pushes its frame with parameters, local variables and the return address. It is freed automatically when the method returns; its size is limited, and an overflow terminates the process.

Call stack (JavaScript)

The stack of frames of running functions on JavaScript's single thread. While it is not empty, the event loop takes no new tasks; overflowing it throws RangeError.

Canary release

A strategy where the new version first gets a small share of traffic or users. Its errors and latency are compared with the old version, and the share is increased in steps or rolled back.

Cancellation token (CancellationToken)

A struct through which an operation learns about a cancellation request. The token itself cannot cancel anything — it can only be checked via IsCancellationRequested or observed via Register.

Cancellation token source (CancellationTokenSource)

An object that hands out tokens and cancels them with Cancel or on a timeout via CancelAfter. It implements IDisposable and is disposed after use.

CancelledError

The exception task.cancel() throws into a coroutine at an await. It derives from BaseException; after cleanup it must be re-raised, otherwise cancellation does not work.

Canonical data model

A shared message format that every system translates its data into. Instead of a mapping for every pair of systems, you need one mapping per system.

CAP theorem

Brewer's conjecture, proved by Gilbert and Lynch in 2002: during a network partition a distributed system cannot keep both linearizability (C) and a response from every non-failing node (A).

Captive dependency

A configuration error where a long-lived service holds a dependency with a shorter lifetime, for example a singleton holding a scoped service. The dependency then lives as long as its owner.

Card table

A bitmap of memory ranges in older generations that had references stored into them. The write barrier fills it on every reference store, and a young-generation GC scans only the marked ranges.

Cardinality estimation

The optimizer's prediction of how many rows each plan operator returns. It is based on statistics and drives join choice, operation order and the memory grant size.

Cartesian explosion

The blow-up in result rows when one query joins several sibling collections: the rows of each collection multiply with each other. An order with 10 lines and 10 payments yields 100 rows.

Cascading failure

A failure that spreads through a system: one component's failure overloads or disables others. An example is a readiness probe on a shared database that pulls every instance out of the load balancer at once when the database fails.

CDN (content delivery network)

A network of servers in points of presence worldwide that caches and serves static assets and cacheable responses close to the user. It offloads the origin and cuts latency.

Central Package Management (CPM)

Managing NuGet package versions for a whole repository in a single Directory.Packages.props file. With transitive pinning it also sets versions of transitive dependencies.

Certificate chain (chain of trust)

The site's certificate is signed by an intermediate certificate authority, which is signed by a root the client already trusts. The server sends its own and the intermediate certificates, and the client verifies the signatures up to the root.

Chain of Responsibility

A behavioral pattern: a request travels along a chain of handlers, and each one decides whether to handle it, pass it on, or stop. An example in .NET is the ASP.NET Core middleware pipeline.

Challenge

What an authentication scheme does when an anonymous user needs to sign in: the cookie scheme redirects to a login page, OIDC to the provider, JWT bearer returns 401.

Change data capture (CDC)

Capturing changes from a database's transaction log and delivering them to consumers as a stream of before-and-after events. In SQL Server it is a built-in feature with change tables (it needs SQL Server Agent), in PostgreSQL it is logical decoding; Debezium turns such a stream into Kafka events.

Change detection

The mechanism that compares template expressions with their previous values and updates the parts of the DOM that changed. It is triggered by zone.js or by notifications from signals and events.

Change token (IChangeToken)

A signal object meaning "the data has changed". File configuration providers fire it when a file is reloaded, and IOptionsMonitor<T> uses it to clear its options cache.

Change tracker

The part of DbContext that holds tracked entities, their states and original values. From the difference between original and current values, SaveChanges builds INSERT, UPDATE and DELETE statements.

Change tracking

A SQL Server feature that, synchronously with every DML operation, records the keys of changed rows and a version number. It answers "what changed since version N" but does not keep old values.

Channels (System.Threading.Channels)

Async producer-consumer queues: writing and reading wait through await and do not block threads. Channels can be bounded or unbounded.

Characterization test

A test that pins down the actual behavior of existing code rather than the required one. The term is Michael Feathers's; such tests protect refactoring and legacy migration.

Cherry-pick

The git cherry-pick command, which applies the changes of one commit on top of the current branch and creates a new commit with the same change. With -x a reference to the original commit is added to the message.

Chiseled image (Ubuntu Chiseled)

A distroless flavor of the .NET images on Ubuntu: only the packages the runtime needs, no shell or package manager, non-root user by default. No ICU or tzdata unless you take the -extra variant.

Choreography

A way to coordinate a saga without a central controller: each service reacts to other services' events and publishes its own. Simple for short chains, but nobody sees the whole process.

CI/CD pipeline

A sequence of steps, described as code, that the CI system runs for every change: restore, build, tests, analysis, publish and deploy. In GitHub Actions it is a YAML workflow, in Jenkins a Jenkinsfile.

Circuit breaker

A strategy that stops calling a dependency after a failure ratio is reached and rejects calls immediately, then lets a probe through after a pause. Three states — closed, open, half-open.

Claim

A type-value statement about a user or service issued by a trusted issuer: name, email, department, role. It describes who the subject is, not what it may do; in .NET it is the Claim class.

Claim rules

ADFS rules in their own language: a condition, then => and an issue or add action. They decide which claims go into the token and where their values come from, for example AD attributes.

Claims transformation (IClaimsTransformation)

An ASP.NET Core interface whose TransformAsync runs after successful authentication and can add app data to the principal. It runs on every request, sometimes several times, so it must be idempotent.

ClaimsIdentity

A set of claims obtained through one authentication method. It holds AuthenticationType (without it the identity is not considered authenticated), plus NameClaimType and RoleClaimType.

ClaimsPrincipal

The user in .NET: one or more ClaimsIdentity objects. In ASP.NET Core it is HttpContext.User; IsInRole, HasClaim and FindFirst search the claims of all its identities.

Class member visibility in Delphi

The private, protected, public and published sections. In Delphi private and protected are visible to the whole unit, so strict private and strict protected exist for class-only access, while published also generates RTTI.

Clean architecture

A style where the domain core sits in the center and every source-code dependency points toward it. Infrastructure and UI plug in from outside through interfaces declared in the core. Hexagonal and onion architecture are close variants.

Client Component

A component from a module marked with 'use client'. It renders to HTML on the server and in the browser, its JS goes into the bundle, so it can use state, effects and events.

Client credentials

An OAuth 2.0 flow where an application gets a token on its own behalf with a client_id and a secret or certificate, with no user involved. Used for service-to-service calls and background jobs.

Client evaluation

Running part of an EF Core query in the application's memory instead of the database. Since EF Core 3.0 it is allowed only in the final Select projection; elsewhere an untranslatable expression throws.

Clock skew

A time tolerance applied to exp and nbf in case the issuer's and the API's clocks drift apart. TokenValidationParameters.ClockSkew defaults to 5 minutes.

Closure

A lambda or local function together with the variables it captures from the enclosing scope. The compiler moves captured variables into fields of a generated class, and they live as long as the delegate does.

Closure

A nested function together with the enclosing function's variables it uses. The variables live in cells (__closure__) for as long as the function lives; nonlocal lets you rebind them.

Closure (JavaScript)

A function together with a reference to the lexical environment it was created in. Captured variables live as long as the function and are seen by reference, not as a copy of the value.

CLR (Common Language Runtime)

The .NET runtime: it loads assemblies, compiles IL to machine code and manages memory, exceptions and threads. The modern .NET implementation is called CoreCLR.

CLS (Cumulative Layout Shift)

A measure of unexpected layout shifts: the largest burst of shifts during the page's lifetime. Good is 0.1 or less.

cluster

The Node.js module that starts several copies of the app as processes on one port: the primary process accepts connections and hands them to workers. Processes do not share memory.

Clustered index

An index whose leaf level holds the table rows themselves, sorted by the key. A table has only one; PRIMARY KEY creates it by default.

Clustering key

The columns of the clustered index. The key is copied into every nonclustered index as the row pointer, so it should be narrow, unique and static.

Code coverage

The share of code lines or branches executed during tests. It reveals untested code but does not prove the executed code is verified. In .NET it is measured by coverlet and Microsoft Code Coverage.

Code page

A table that maps bytes to characters in a single-byte encoding. For Cyrillic on Windows it is usually 1251; characters missing from the table are lost on conversion.

Code smell

A sign of a maintainability problem that doesn't break the code right now: an overly long method, duplication, a convoluted condition. SonarQube classifies such issues under maintainability.

Code splitting

Splitting a bundle into chunks that load on demand via dynamic import(): by route or by rarely used features. Reduces the amount of JS loaded at startup.

Cohesion

A measure of how much the members of a module or class serve one task. High cohesion means data and the methods that work on it live together; low cohesion means classes like Utils.

Collation

Rules for comparing and sorting strings for a language. In PostgreSQL regular collations are deterministic and case-sensitive; case-insensitive matching comes from a nondeterministic ICU collation, the citext type, or lower().

Collation in SQL Server

Rules for comparing and sorting strings: code page, case and accent sensitivity. A Windows collation (Cyrillic_General_CI_AS) compares varchar and nvarchar by the same rules, a SQL collation (SQL_Latin1_General_CP1_CI_AS) by different ones.

Collection expression

The C# 12 square-bracket syntax for creating collections: int[] a = [1, 2, 3];, [..first, ..second]. Works for arrays, Span<T>, lists and other collections.

Columnstore index

An index that stores data by column in compressed segments, in rowgroups of up to 1,048,576 rows. It speeds up aggregates over large tables through compression, segment elimination and batch mode.

Command

A behavioral pattern: a request is packaged as an object with its data, so it can be passed around, queued, logged or undone.

Command injection

User data ends up in a shell command line and appends a command of its own, such as & del *. The defense is to start the process without a shell and pass arguments as a list.

Commit

A recorded snapshot of all project files together with the author, date, message and a link to the parent commit. It is identified by a hash and never changes once created.

CommonJS

The original Node.js module system: import with require(), export with module.exports. A module is loaded and run synchronously on the first require call, and the result is cached.

Compare-and-swap (CAS)

An atomic operation that writes a new value only if the current value equals the expected one. In .NET it is Interlocked.CompareExchange, and lock-free algorithms are built on it.

Compensating transaction

An operation that undoes the business effect of an already committed step, such as a refund after a charge. It's not a rollback but a new action, and its result is visible.

Compiled query

A LINQ query turned into a delegate ahead of time with EF.CompileQuery or EF.CompileAsyncQuery. When it's invoked, EF doesn't build or compare the expression tree, which saves time on hot paths.

Component owner (Owner)

The component passed to the TComponent.Create(AOwner) constructor. The owner keeps a list of its components and frees them in its destructor, which is why a form's buttons are freed together with the form.

Component owner (Owner)

The component passed to the Create(AOwner) constructor. It keeps a list of its components in Components and frees them when it is destroyed.

Component state

Data React keeps for a component instance between renders. It changes only through the setter from useState, and every change triggers a new render.

Component streaming

The VCL mechanism that saves components' published properties to a .dfm and restores them: TReader creates objects by class name and assigns properties via RTTI.

Compose profiles

Service labels in Compose: a service with a profile starts only when the profile is enabled via --profile or COMPOSE_PROFILES. Services without a profile always start.

Compositing

Assembling a frame from ready layers on a separate compositor thread. Changes to a layer's transform and opacity skip layout and paint.

Composition

An object holds another object in a field and uses it through its public contract — a "has-a" relationship instead of "is-a". The GoF advice is to favor composition over class inheritance.

Composition root

The single place in an app where the object graph is composed: service registrations and the choice of implementations. In ASP.NET Core it is Program.cs and the Add... extension methods it calls.

Comprehension

An expression that builds a list, dict or set from an iterable with an optional filter: [x * x for x in items if x > 0]. The counterpart of LINQ Select and Where.

Computed column

A column whose value is defined by an expression over other columns. A deterministic computed column can be indexed, and the optimizer uses that index for queries with the same expression.

Concurrency

Several operations are in progress at the same time but do not necessarily execute at the same instant. Parallelism is the special case where they run simultaneously on different cores.

Concurrency token

A property whose original value EF Core adds to the WHERE of UPDATE and DELETE. If the row was changed in the meantime, zero rows are affected and EF throws DbUpdateConcurrencyException. On SQL Server it's usually rowversion, in PostgreSQL xmin.

Concurrent collections

Thread-safe collections from System.Collections.Concurrent: ConcurrentDictionary, ConcurrentQueue, ConcurrentStack, ConcurrentBag and BlockingCollection.

Conditional compilation

The {$IFDEF}, {$IF} and {$ENDIF} directives that include or exclude code at build time. The UNICODE symbol lets one codebase build in both old and new Delphi.

Conditional if operator

Delphi 13's ternary operator: X := if A > B then A else B;. It works inside any expression, and its type is the common type of both branches.

Conditional type

A type of the form T extends U ? X : Y that picks a result based on type compatibility. With infer it extracts part of a type; over a union it distributes across the members by default.

Confidential client

A client that keeps a secret or key on a server and authenticates to the authorization server: a server-side web app, a BFF, a service.

Configuration binding

Filling an object's properties with values from a configuration section, converting strings to the property types. It uses reflection by default; since .NET 8 there is a binding source generator for AOT.

Configuration provider

A component that loads key-value pairs from one source: a JSON file, environment variables, the command line, a secret store. When keys collide, the provider added last wins.

ConfigureAwait(false)

An await setting under which the continuation does not return to the captured SynchronizationContext or TaskScheduler. It is used in general-purpose libraries.

ConfigureAwaitOptions

Flags for Task.ConfigureAwait in .NET 8+: ContinueOnCapturedContext, SuppressThrowing and ForceYielding.

conftest.py

A file whose fixtures and hooks pytest automatically makes available to every test in that directory and its subdirectories, without imports.

Confused deputy

A service with broad rights runs a client's request using its own rights without checking the client's. The client gains access through the service that it does not have itself.

Connascence

Meilir Page-Jones's measure of dependency: two elements are connascent if changing one requires changing the other. Its forms are ranked by strength — from name and type to position, meaning, algorithm and timing.

Constrained delegation (KCD)

Kerberos Constrained Delegation: the front end's account may obtain tickets on the user's behalf only to listed SPNs (the msDS-AllowedToDelegateTo attribute). Works through the S4U2Proxy extension.

Constructor injection

A form of DI where dependencies arrive as constructor parameters. All of the class's dependencies are visible in its signature, and the object cannot exist without them.

Consumer group

A set of Kafka consumers sharing a group.id that read a topic together. Partitions are split among the members, and the read position belongs to the group.

Container healthcheck

A command Docker periodically runs inside a container to determine its state: starting, healthy or unhealthy. In Compose, condition: service_healthy relies on it.

Container image

An immutable template that containers are started from: app files, runtime, system libraries and the start command. It consists of layers and is stored in a registry under a name and tag.

Container query

An @container condition that checks the size of the nearest ancestor with container-type rather than the viewport. Lets a component adapt to wherever it is placed.

Container registry

A service that stores and serves images: Docker Hub, mcr.microsoft.com, Azure Container Registry, GitHub Container Registry. An image is referenced by tag (mutable) or by digest (immutable).

Content-Security-Policy (CSP)

A response header listing the allowed sources of scripts, styles and other resources. The browser blocks everything else, so an injected script won't run even if encoding was missed somewhere.

Context (React)

A way to pass a value to a whole subtree without props. When the value changes, every component that reads it re-renders.

Context manager

An object with __enter__ and __exit__ methods for the with statement. __exit__ is called on any exit from the block, including an exception — the counterpart of using in C#.

Continuation

Code that runs after a task completes. For an async method, it is the rest of the method after await.

Continuous delivery (CD)

The continuation of CI: every verified build is packaged and deployed to test environments automatically, so it can go to production at any time — after a manual approval.

Continuous deployment

A form of CD with no manual step: every change that passes all pipeline checks goes to production automatically. It requires reliable automated tests, monitoring and fast rollback.

Continuous integration (CI)

A practice where developers merge changes into a shared branch often, and every change is built and tested automatically. Integration problems show up within minutes, not on release day.

Contract (design by contract)

Describing a method's behavior through preconditions (what is true before the call), postconditions (what is guaranteed after) and invariants (what is always true). Bertrand Meyer's approach; LSP rests on it.

Contract test

A test that checks that an API provider and its consumer honor a shared agreement about requests and responses. In the consumer-driven approach the consumer writes the contract; the tool is Pact (PactNet).

Contravariance

Using a generic type with a more general argument where a more derived one is expected: Action<object> instead of Action<string>. Declared with in T on interfaces and delegates.

Control groups (cgroups)

A Linux kernel mechanism that limits and accounts for the resources of a group of processes: CPU, memory, I/O. Container limits are set through cgroups, and .NET reads them at startup.

Controlled component

A form field whose value is driven by state: value comes from state and onChange updates it. React, not the DOM, is the source of truth.

Controller (API controller)

A class deriving from ControllerBase whose public methods (actions) handle HTTP requests. Routes come from attributes, and a request goes through the MVC pipeline: filters, model binding, validation and response formatting.

Convention-based middleware

A class with no interface, a constructor taking RequestDelegate and an Invoke or InvokeAsync method. It is created once when the pipeline is built and lives for the whole app lifetime.

Conway's law

Melvin Conway's observation (1968): organizations design systems whose structure copies the organization's own communication structure. That is why service boundaries usually match team boundaries.

Cooperative cancellation

The .NET cancellation model: the initiator only requests cancellation, and the operation checks the token itself and decides how to stop. There is no forced abort.

Core Web Vitals

Google's three user-experience metrics: LCP (loading), INP (responsiveness) and CLS (visual stability). Assessed at the 75th percentile of real visits.

CoreWCF

A port of WCF's server side to modern .NET, a .NET Foundation project with Microsoft support. It is meant for migrating existing SOAP services; for new ones Microsoft recommends gRPC.

Coroutine

A function declared with async def, and the object its call returns. Its code runs only when the coroutine is awaited or wrapped in a task, and it can suspend at every await.

Correlated subquery

A subquery that references columns of the outer query and is therefore logically evaluated for each of its rows. The optimizer often rewrites it as a join.

CORS (Cross-Origin Resource Sharing)

The mechanism by which a server uses Access-Control-Allow-* headers to let the browser hand a response to a script from another origin. It relaxes the same-origin policy and does not protect the server itself.

Coupling

A measure of how much modules or classes depend on each other: how much a change in one forces a change in another. The aim is loose coupling: depend on a narrow contract, not on internals.

Covariance

Using a generic type with a more derived argument where a more general one is expected: IEnumerable<string> instead of IEnumerable<object>. Declared with out T on interfaces and delegates.

Covering index

An index that contains every column a query needs, either in the key or as included columns. The query reads only that index and never touches the table.

CPU-bound operation

An operation limited by processor computation. Only parallelism makes it faster, and it is moved off the UI thread with Task.Run.

CQRS (Command Query Responsibility Segregation)

Separating the write model (commands change state) from the read model (queries return data). The models can live in one database or in different ones.

Creational pattern

A pattern that separates the code using an object from the decision about which object to create and how. GoF lists five: Abstract Factory, Builder, Factory Method, Prototype, Singleton.

Critical rendering path

The browser's steps from receiving HTML to the first frame: DOM, CSSOM, render tree, layout, paint, composite. Its length is set by render-blocking CSS and scripts.

Critical section

A piece of code that works with shared data and therefore must be run by at most one thread at a time. In C# it is usually guarded with the lock statement.

Cron expression

A schedule string made of fields for minutes, hours, day of month, month and day of week: 0 2 * * * means every day at 02:00. In Quartz the first field is seconds.

Cross join (CROSS JOIN)

A Cartesian product: every row of one table is combined with every row of the other, with no condition. Used for grids such as "store × day".

Cross-cutting concern

Logic that many parts of an application need regardless of the business task: logging, authorization, caching, error handling. It is moved into middleware, filters or decorators.

CSRF (cross-site request forgery)

An attack where another site makes the browser send a request to your site on behalf of a signed-in user. It works because the browser attaches cookies by itself.

CSS Grid

A two-dimensional CSS layout module: a display: grid container defines rows and columns, and its children occupy cells and areas of the grid.

CSSOM (CSS Object Model)

The tree of rules the browser builds from all the page's styles. Together with the DOM it is needed to build the render tree, which is why CSS blocks the first render.

CTE (common table expression)

A named subquery declared with WITH before a statement and visible only within it. In SQL Server a CTE's result is not stored: every reference re-executes the definition.

CTS (Common Type System)

The .NET common type system: rules for declaring and using types shared by all languages on the platform. It lets C#, F# and VB.NET use each other's types.

CUPID

Properties of "joyful" code proposed by Dan North as an alternative to SOLID: Composable, Unix philosophy, Predictable, Idiomatic, Domain-based. They are properties code moves toward, not rules it complies with.

Cursor

A T-SQL object that walks a query result one row at a time (DECLARE CURSOR, FETCH NEXT). It is needed for actions that cannot be expressed as one statement; when you need one, declare it LOCAL FAST_FORWARD.

Custom managed record

A record with Initialize, Finalize and optionally Assign operators that the compiler calls automatically on creation, destruction and copy. It enables RAII-style wrappers. Introduced in Delphi 10.4 Sydney.

Cycle collector (cyclic GC)

CPython's gc module: it complements reference counting and finds groups of objects that reference each other but are unreachable. It works by generations.

Dapper

A micro-ORM from the Stack Overflow team: extension methods on IDbConnection (Query, Execute) that run your SQL with parameters and map columns onto object properties. It doesn't track changes or generate SQL.

Data binding

The link between a template and its component class: interpolation {{ }}, property binding [prop], event binding (event) and two-way binding [(prop)]. Angular updates the DOM when a value changes.

Data class (dataclass)

A class decorated with @dataclass, for which Python generates __init__, __repr__ and __eq__ from the annotated fields. frozen=True and slots=True make it immutable and compact.

Data mart

A separate database or schema for the reports of one area: sales, warehouse, finance. ETL fills it, and its structure is built for aggregates rather than writes.

Data Protection (ASP.NET Core)

The encryption and signing subsystem behind authentication cookies and antiforgery tokens. In a server farm it needs a shared key store.

Data type mapping rules (MapRules)

The FormatOptions.MapRules collection in FireDAC: each rule replaces the data type returned by the driver with one the application prefers. Used to match field types to the old library during a migration.

Data type precedence

The rule SQL Server uses to pick a common type for a comparison: the lower-precedence type is converted to the higher one. nvarchar outranks varchar, and int outranks string types.

Data-aware control

A visual component (TDBGrid, TDBEdit, TDBLookupComboBox) that displays and edits the fields of a dataset's current record through a TDataSource.

Data-oriented design

An approach that shapes data around how the CPU reads it: dense arrays of values instead of an object graph, sequential memory access. Used on hot paths.

DataAnnotations

Attributes from System.ComponentModel.DataAnnotations for declarative validation rules: [Required], [Range], [StringLength], [EmailAddress] and others.

DATAS (dynamic adaptation to application sizes)

A Server GC mode that adjusts the number of heaps and the generation 0 budget so the heap size matches the amount of live data. Introduced in .NET 8, on by default since .NET 9.

Dataset state (State)

The value of the State property — dsBrowse, dsEdit, dsInsert and others — that defines what can be done with the current record. Edit, Insert, Post and Cancel switch states.

DbContext

The central EF Core class: a session with the database that runs queries, tracks entity changes and saves them with SaveChanges. It's designed for a single unit of work and isn't thread-safe.

DbContext pooling

Reusing DbContext instances: on disposal a context is reset and returned to the pool. Enabled with AddDbContextPool or PooledDbContextFactory; unrelated to the ADO.NET connection pool.

dbExpress

A Delphi library of lightweight drivers with unidirectional datasets that neither buffer nor edit rows. Embarcadero has deprecated it and recommends migrating to FireDAC.

DDD (Domain-Driven Design)

Eric Evans's approach (2003) where code is built around a model of the business and the language of its experts. It has a strategic level (context boundaries) and a tactical level (aggregates, value objects, events).

Dead letter queue (DLQ)

A separate queue or topic for messages that couldn't be processed after all attempts. It keeps a poison message from blocking the stream and preserves it for investigation.

Dead tuple

A row version deleted or replaced by a committed transaction that no active transaction can see anymore. It takes up space in the table and indexes until VACUUM removes it.

Deadlock

A situation where threads wait for each other forever: each holds a resource the other needs. The typical cause is taking the same locks in different orders.

Deadlock graph

An XML report of a deadlock: participants, resources held and awaited, lock modes, query text and the victim. In SQL Server the system_health Extended Events session records it by default (the xml_deadlock_report event).

Debezium

An open source CDC platform built on Kafka Connect: it reads the database transaction log and publishes row changes to Kafka. The Outbox Event Router turns outbox rows into events.

Decorator

A pattern where an object wraps another object with the same interface and adds behaviour before or after the call: caching, logging, retries. The built-in .NET container does not support decorators.

Decorator

A function that takes a function or class and returns a replacement. @d above def f equals f = d(f); wrappers are built with functools.wraps.

Decorator metadata (emitDecoratorMetadata)

Type information TypeScript stores for decorated classes when emitDecoratorMetadata is on, such as design:paramtypes — the constructor parameter types. NestJS reads it through reflect-metadata to work out what to inject.

Default interface method

An interface member with a body (C# 8). It is used when the type does not provide its own implementation and can be called only through a reference of the interface type. Requires the .NET Core 3.0+ runtime.

Default policy

The policy ASP.NET Core applies to [Authorize] and RequireAuthorization() without a policy name. Out of the box it only requires an authenticated user; change it with SetDefaultPolicy.

Defensive copy

A hidden copy of a struct the compiler makes when calling its method through a readonly field or an in parameter, so the method cannot change the original. Does not happen with a readonly struct.

Deferred execution

A LINQ query runs not when it is declared but when its result is enumerated, and it runs again on every enumeration. Methods that return IEnumerable<T> work this way: Where, Select, OrderBy.

Degree of parallelism

The maximum number of operations running at the same time. In Parallel.ForEachAsync it is set via ParallelOptions.MaxDegreeOfParallelism.

Delegate

A type whose instance references a method and, for an instance method, the target object. Built-in delegates are Func<...> and Action<...>.

DelegatingHandler

The base class for HttpClient message handlers that pass the request to the next handler via base.SendAsync. Such handlers are chained together for logging, retries and headers.

Delegation

A composition technique: an object forwards a call to its component, sometimes adding behavior before or after. Not to be confused with C# delegates, which are types that reference methods.

Delivery receipt (DLR)

An asynchronous notification from the SMS centre about a message's final status: delivered, expired, undeliverable. In SMPP it arrives as a deliver_sm operation; the text format is SMSC-specific.

Delphi managed type

A type whose lifetime the compiler manages: long strings, dynamic arrays, interfaces, variants and records with fields of such types. The compiler initializes them, maintains their reference counts and frees them through an implicit try..finally.

Delphi property

A class member that looks like a field but is read and written through read and write specifiers, either directly from a field or through a method. Without write the property is read-only.

Delphi unit

A .pas file, the compilation unit of Delphi. The interface section declares what other units can see, implementation holds the code, and the optional initialization and finalization sections run at program start-up and shutdown.

Delphi virtual method table (VMT)

A per-class structure with slots holding the addresses of all its virtual methods, inherited ones included. Every object starts with a pointer to its class's VMT, and a virtual call takes the address from the right slot.

Delta store

A regular B-tree inside a columnstore index that receives small inserts. When a rowgroup reaches 1,048,576 rows, the background tuple mover compresses it into columnar format.

Denormalization

Deliberate duplication of data for faster reads: a total in a document header, a copied name, a reporting table. It needs a mechanism that keeps the copies consistent.

Dependency array

The second argument of useEffect, useMemo and useCallback. React compares its items with Object.is and re-runs the effect or recomputes the value only if something changed.

Dependency injection (DI)

A technique where an object receives its dependencies from outside, usually through its constructor, instead of creating them itself. In ASP.NET Core the built-in container creates and passes the dependencies.

Dependency inversion principle (DIP)

The D in SOLID: high-level modules do not depend on low-level modules; both depend on abstractions. Dependency injection is the practical way to follow it.

Dependency lock file

A file with exact versions and hashes of every package in the graph, transitive ones included. In Python it is uv.lock, poetry.lock, a pinned requirements.txt or the standard pylock.toml (PEP 751).

Depends (FastAPI dependencies)

The FastAPI mechanism that calls a dependency function before the endpoint and passes its result as a parameter. The result is cached per request, and a dependency with yield runs cleanup code after the response.

Depth-first search (DFS)

Graph traversal that follows one branch to the end and then backtracks, using recursion or an explicit stack. O(V + E); the basis for cycle detection, connected components and topological sort.

Design pattern

A named, typical solution to a recurring design problem: class roles, the relationships between them, and the consequences. It is not ready-made code but a scheme you implement for your own problem.

Developer Exception Page

A page with details of an unhandled exception: stack trace, headers, query, cookies. It is enabled automatically in the Development environment and must never run in production.

Device code flow (device authorization grant)

An OAuth flow for devices without a browser or keyboard (RFC 8628): the device shows a code and a URL, the user signs in on another device, and the original one polls /token.

Devirtualization

A JIT optimization that replaces a virtual or interface call with a direct one when the exact type is known, for example for a sealed class. The method can then be inlined.

DI container (service container)

An object that creates services from registered rules, passes them their dependencies and manages their lifetimes. In .NET registrations go into IServiceCollection, and the container is IServiceProvider.

Diagnostic port

The channel diagnostic tools use to talk to the .NET runtime: a named pipe on Windows or a Unix socket in the temp directory on Linux. In a container, a sidecar needs shared access to it.

diagnostics_channel

The Node.js module for publishing diagnostic events on named channels. Libraries and built-in modules report requests, and APM tools and OpenTelemetry subscribe without patching code.

Dictionary

The .NET hash table: a value per key, O(1) on average for lookup and insert. A key needs consistent GetHashCode and Equals, and must not change after insertion or the entry is lost in its bucket. For concurrent access there is ConcurrentDictionary.

Dirty read

An anomaly in which a transaction reads another transaction's changes that are not yet committed and may be rolled back. Possible only under READ UNCOMMITTED, including via NOLOCK.

Discovery document (provider metadata)

JSON at /.well-known/openid-configuration with endpoint URLs, jwks_uri, and supported flows and algorithms. Clients configure themselves from it automatically.

Discriminated union

A union of object types with a shared tag field of a literal type, such as kind or status. Checking the tag narrows the value to one variant.

Display class

A hidden class the compiler generates for a capturing lambda: captured variables become its fields and the lambda becomes its method. Creating an instance is a heap allocation.

Disposable transient

A transient service that implements IDisposable or IAsyncDisposable. The container keeps a reference to each such instance until the end of the scope, so when resolved from the root they pile up until the app stops.

Dispose pattern

The standard resource-release scheme: Dispose() calls Dispose(true) and GC.SuppressFinalize, the finalizer calls Dispose(false), and protected virtual void Dispose(bool) releases managed resources only when given true.

Distributed cache (IDistributedCache)

A cache in external storage (Redis, SQL Server, Postgres) shared by all app instances. It stores byte arrays, so serialization is up to the app.

Distributed lock

A lock shared by several processes or nodes, usually in Redis or a database. It needs a timeout, because the holder may crash without releasing it.

Distributed monolith

A system of formally separate services that cannot be released independently: they share a database, call each other in synchronous chains and change together. It combines the downsides of a monolith and of microservices.

Distributed tracing

Recording the path of one request through all services as a tree of spans sharing a trace id. It shows where the time goes and where an error happened.

Distributed transaction

A transaction across several resources (databases, connections) that a coordinator commits with two-phase commit. On Windows that is MSDTC; in .NET 7+ it is supported only on Windows and must be enabled explicitly.

Distributed version control system (DVCS)

A version control system where every participant has a full copy of the repository with all its history. Commits are made locally and exchanged with the server and other copies by separate commands. Examples are Git and Mercurial; SVN, by contrast, is centralized.

DML trigger

A procedure that SQL Server runs on its own on INSERT, UPDATE or DELETE. It fires once per statement, and the changed rows are available in the inserted and deleted pseudo-tables.

Docker

The tool that builds an application into an image and runs it as a container — a process with its own filesystem, network and resource limits. The image is the same on a developer machine and in production, so "works on my machine" stops being an argument.

Docker Compose

A tool that creates and starts a set of related containers from a compose.yaml file, with a shared network, volumes and startup order. It works within a single host.

DOM (Document Object Model)

The object tree a browser parses an HTML page into; scripts read and change the page through it. Every change can trigger style and layout recalculation, so writes are batched and kept apart from reads.

Domain event

An object describing a business-relevant fact in the past tense: OrderSubmitted. Other parts of the system react to it without coupling to its source directly.

dotnet-counters

A CLI tool for watching metrics of a running .NET process in real time: heap size, GC counts, GC pauses, thread pool, exceptions.

dotnet-dump

A CLI tool for collecting and analyzing a full memory dump of a .NET process. The analyze command opens the dump with SOS commands: dumpheap, gcroot, finalizequeue.

dotnet-gcdump

A CLI tool that captures the managed heap's object graph from a live process via EventPipe. It triggers a full GC to do so; .gcdump files open in Visual Studio or PerfView.

dotnet-monitor

A production tool, usually run as a sidecar container: it captures dumps, traces, logs and metrics of .NET processes through an HTTP API, and collects them on its own via trigger rules and uploads them to storage.

dotnet-trace

A CLI tool that records an event trace of a running .NET process over EventPipe: stack samples, GC, JIT and exception events. The result opens in PerfView, Visual Studio or speedscope.

Double hop

The second-hop problem: an app that received the user through Kerberos can't authenticate as that user to the next server, because it only has a ticket to itself. Solved with Kerberos delegation.

DPoP (Demonstrating Proof of Possession)

A mechanism (RFC 9449) that binds a token to the client's key: every request carries a signed proof of possession of that key. A token stolen without the key is useless.

DRY (Don't Repeat Yourself)

A principle from "The Pragmatic Programmer" (1999): every piece of knowledge must have a single, unambiguous, authoritative representation within a system. It is about knowledge and rules, not identical lines of code.

DTO (Data Transfer Object)

A plain data-only object for passing data between layers or over the network, with no business logic. In an API these are request and response models kept separate from database entities.

Dual write

Writing one change to two systems without a shared transaction, such as a database and a broker. A failure between the writes makes them diverge: the event is lost or describes a change that was rolled back.

Duck typing

An object fits if it has the required methods and attributes, regardless of its type: "if it quacks like a duck, it is a duck". The default style of Python code.

Dunder method (special method)

A method whose name is wrapped in double underscores and that the language itself calls: __init__, __eq__, __len__, __iter__. Through them a class supports operators and built-in functions.

Dynamic batching

An inference-server technique: requests that arrive at almost the same time are grouped into one batch and go through the model in a single call. It raises GPU utilization at the cost of a little latency.

Dynamic method

An overridable method called through the DMT, a table that holds only the methods declared or overridden in the class itself. Semantically the same as virtual, but it saves memory at the cost of slower calls.

Dynamic PGO

Profile-guided optimization at run time: the JIT collects statistics on hot paths and types and uses them when recompiling a method. On by default since .NET 8.

Dynamic programming

A method for problems made of overlapping subproblems: each subproblem's answer is computed once and reused. It turns an exponential search into a polynomial algorithm.

Dynamic proxy

A stand-in type generated at run time that intercepts method calls. Castle DynamicProxy, Moq mocks, EF Core lazy loading and DispatchProxy all work this way.

Eager loading

Loading related data in the same query as the main data: in EF Core, Include and ThenInclude, which become JOINs or, with split query, separate queries.

EAV (entity–attribute–value)

A schema in which attributes are stored as "entity, attribute name, value" rows instead of separate columns. Flexible, but awkward to query and untyped; JSONB often replaces it.

EDI (electronic data interchange)

Electronic exchange of standard business documents between companies — orders, dispatch advices, invoices — in a machine-readable format, usually through an EDI provider.

EF Core database provider

A NuGet package that teaches EF Core to work with a specific database: it translates queries into that database's SQL dialect, maps types and generates migrations. For example, Microsoft.EntityFrameworkCore.SqlServer and Npgsql.EntityFrameworkCore.PostgreSQL.

EF Core migration

A class with Up and Down methods that moves the database schema from one model version to the next. Created with dotnet ef migrations add from the difference between the model and the snapshot.

EF Core model

Metadata about entities: properties, keys, relationships, table names and column types. EF builds it once per context type from conventions, attributes and the Fluent API, and uses it to generate SQL and migrations.

Effect (useEffect)

Code React runs after painting to synchronize a component with an external system: a subscription, a timer, a connection, a third-party widget.

Effect cleanup

The function an effect's setup returns. React calls it before re-running the effect and on unmount to unsubscribe, stop a timer or close a connection.

ELK (Elasticsearch, Logstash, Kibana)

A stack for collecting, storing and searching logs: Logstash or Beats ship events, Elasticsearch indexes them, Kibana provides search and dashboards. OpenSearch is the open-source fork of Elasticsearch.

Encapsulation

An OOP principle: an object's data and the rules for changing it live in one class, and the state changes only through its methods. That way the class protects its own invariants.

Endpoint

The unit of request handling in ASP.NET Core: a RequestDelegate plus a metadata collection. MapGet handlers, controller actions, Razor Pages and SignalR hubs are all endpoints.

Endpoint filter

The Minimal API counterpart of an MVC filter (.NET 7+): code before and after the handler with access to its arguments through EndpointFilterInvocationContext. Added with AddEndpointFilter.

Endpoint metadata

Arbitrary objects attached to an endpoint: [Authorize] attributes, CORS policies, your own markers via WithMetadata. Middleware after UseRouting reads them through context.GetEndpoint().

Endpoint routing

ASP.NET Core's main routing system since 3.0: UseRouting selects an endpoint by URL and method, and UseEndpoints executes it. Middleware between them sees the selected endpoint and its metadata.

Engine (SQLAlchemy)

SQLAlchemy's entry point to a database: it knows the dialect and driver and holds the connection pool. Created once per process with create_engine.

Enterprise service bus (ESB)

A central integration platform with adapters, routing and message transformation between systems, for example BizTalk Server. It reduces point-to-point links but becomes a central dependency.

Entity state (EntityState)

The marker EF Core uses to decide what to do with an entity on SaveChanges: Added — insert, Modified — update, Deleted — delete, Unchanged and Detached — nothing.

Enumerator

An object with a MoveNext() method and a Current property that foreach uses to walk a collection. It is returned by GetEnumerator() on IEnumerable<T>.

Equality comparer (IEqualityComparer)

An object with Equals and GetHashCode methods that defines key equality for Dictionary, HashSet and LINQ. The default is EqualityComparer<T>.Default.

EqualityContract

A synthesized record class property that returns the record's runtime type. The generated Equals compares it first, so records of different types in one hierarchy are never equal, even with the same data.

Error budget

The allowed share of failures over the SLO window: 100% − SLO. With a 99.9% SLO over 30 days that is about 43 minutes of full downtime. While budget remains, the team spends it on change.

ES modules (ESM)

The standard JavaScript module system: import and export. The import graph is built before any code runs, loading is asynchronous, and top-level await is supported. In Node.js it is enabled by the .mjs extension or "type": "module" in package.json.

Escape analysis

A JIT analysis that determines whether an object can outlive the method that created it. If it cannot, the JIT may allocate it on the stack; in .NET 9–10 this applies to boxes, small arrays and delegates.

ETag

A response header carrying the version of a resource representation. The client sends it back in If-None-Match for caching or in If-Match for optimistic concurrency, getting 412 if the resource has changed.

ETL (extract, transform, load)

The process of moving data: extract it from sources, transform it to the target format and load it. In the SQL Server world the classic tool is SSIS, the cloud one is Azure Data Factory.

European Accessibility Act (EAA)

EU Directive 2019/882, which since 28 June 2025 requires a range of products and services to be accessible: online shops, banking, transport, e-books. Its technical basis is EN 301 549.

Event

A delegate-based class member that lets outside code only subscribe with += and unsubscribe with -=. Only the declaring type can raise it.

Event log (commit log)

An ordered journal where records are only appended and are not deleted when read. Each reader keeps its own position and can replay history within the retention period. Kafka topics work this way.

Event loop

The mechanism of a JavaScript runtime that, whenever the call stack is empty, runs all microtasks and then takes the next task from the queue. It lets a single thread serve timers, events and I/O.

Event loop delay

How much later than scheduled the event loop gets to run a callback. Growing delay means the main thread is busy with synchronous work; it is measured with perf_hooks.monitorEventLoopDelay().

Event sourcing

Storing state as a sequence of events rather than as a current snapshot. The current state is obtained by replaying the events in order.

Event store

A database for event sourcing: it only appends events to streams, tracks each stream's version and rejects a write if the expected version does not match. Examples are KurrentDB (formerly EventStoreDB) and Marten on top of PostgreSQL.

EventEmitter

The Node.js base class for objects with events: on subscribes a listener, emit calls all listeners synchronously. An 'error' event with no listener is thrown as an exception.

EventPipe

The tracing mechanism built into the .NET runtime, the same on every OS. dotnet-counters, dotnet-trace and dotnet-monitor work through it without an external profiler.

Eventual consistency

A model where data on different nodes or services may diverge for a while but converges once all changes are delivered. It's the price of giving up distributed transactions.

Exactly-once

A guarantee that each message is processed exactly one time. Kafka achieves it with the idempotent producer and transactions, but only for records inside Kafka; for external systems it's replaced by at-least-once plus deduplication.

Exception filter

A when (...) condition on a catch block (C# 6). It runs before the stack is unwound; if it is false, the exception keeps propagating as if this catch did not exist.

Exception filter in NestJS

A class with the @Catch() decorator and a catch method that turns an exception into an HTTP response. The built-in global filter handles HttpException and turns unknown errors into a 500.

ExecuteUpdate and ExecuteDelete

EF Core 7+ methods that run an UPDATE or DELETE from a LINQ filter as a single command, without loading entities and without the change tracker. They return the number of affected rows.

Execution context (ExecutionContext)

Ambient data of a thread, such as AsyncLocal<T> values, that flows across await, Task.Run and other asynchronous hops. It always flows, regardless of ConfigureAwait.

Execution plan

The tree of operators SQL Server uses to run a query: table access, joins, sorts. The estimated plan is the compilation result; the actual plan adds real row and execution counts.

Exhaustiveness

A property of a switch expression: its arms cover every possible input value. If they do not, the compiler issues warning CS8509.

Expand/contract (parallel change)

A zero-downtime schema change technique: first expand the schema compatibly, then move the application and data to it, and only then remove the old parts.

EXPLAIN ANALYZE

A PostgreSQL command that runs the query and prints the plan with actual time, row counts and loops at every node. With the BUFFERS option (on by default since version 18) it also shows page reads.

Explicit JWT typing

Stating the kind of token in the typ header, for example at+jwt for an access token. It stops an id_token or another JWT from the same issuer from passing as an access token (RFC 8725, section 3.11).

Exponential backoff

A pause between retries that multiplies with each attempt: 1, 2, 4, 8 seconds. It gives an overloaded service time to recover.

Expression index

An index on the result of an expression or function, such as lower(email). It is used only when the query contains the same expression; in SQL Server this requires a computed column.

Expression problem

Philip Wadler's term (1998): it is hard to make both new data variants and new operations addable without editing existing code. OOP makes the first easy, functions with pattern matching the second.

Expression tree

Code represented as System.Linq.Expressions objects. A lambda assigned to Expression<Func<...>> becomes a tree that a provider can inspect and translate, for example into SQL.

Extended RTTI and attributes

Run-time type information from the System.Rtti unit covering a class's fields, methods and properties, not just published ones. It stores attributes such as [Test] that serializers, ORMs and DUnitX rely on. Introduced in Delphi 2010.

Extension members

C# 14 extensions declared in an extension block. Besides methods, they can add properties, static members and operators to existing types.

Extension method

A static method of a static class with this before its first parameter (C# 3). It is called like an instance method; the compiler turns the call into a regular static call.

Facade

A structural pattern: a simple unified interface to a complex subsystem made of several objects. The client calls the facade and doesn't know about the parts of the subsystem.

Factory Method

A creational pattern: the base class declares a method that creates an object, and a subclass decides which concrete class to return.

Failover

Automatically moving load from a failed component or provider to a standby one. The decision is usually based on error rate, timeouts or health checks.

Fake

A simplified but working implementation of a dependency: a repository over a dictionary, email sent to a list, FakeTimeProvider. It behaves like the real thing but is not fit for production.

Fallback policy

The policy for endpoints with no authorization metadata. By default there is none, so such endpoints are open; SetFallbackPolicy with RequireAuthenticatedUser locks down everything not marked explicitly.

Fast-forward

A merge where the target branch has no new commits, so Git simply moves its pointer to the tip of the branch being merged. No merge commit is created.

FastAPI

A Python web framework for HTTP APIs built on Starlette and Pydantic. Parameters, bodies and responses are described with type hints, and validation and OpenAPI docs are generated from them.

FastAPI thread pool

The pool where FastAPI runs endpoints and dependencies declared with plain def. It is provided by AnyIO and limited to 40 concurrent calls per process by default.

FastMM

Delphi's memory manager for Win32 and Win64, built in by default since Delphi 2006. It can report leaks on exit (ReportMemoryLeaksOnShutdown), and the full version in debug mode catches access to freed memory.

Feature envy

A code smell from Fowler's catalog: a method uses another class's data more than its own. It usually belongs in that class.

Feature freeze

A period when no new functionality is added to a product, only bug fixes. During a migration it avoids porting every new feature into two versions.

Feature toggle (feature flag)

A configuration switch that turns a code path on or off without a new deployment: for some users, by percentage or entirely. .NET has the Microsoft.FeatureManagement library.

File transfer

An integration style where one system exports data to a file and another picks it up and loads it — via a shared folder, SFTP or AS2. Simple and good for large batches, but the data is stale until the next export.

File-based app

An app made of a single .cs file with no project, run with dotnet run app.cs (since .NET 10). Packages and settings come from #:package and #:property directives.

Filtered index

A nonclustered index with a WHERE clause that stores only the matching rows. It is smaller and cheaper than a full index but is used only when the query is guaranteed to fall inside the filter.

Finalization queue

An internal CLR list of objects that have a finalizer. Unreachable objects move from it to the f-reachable queue, the finalizer thread runs their finalizers, and the memory is freed at the next GC.

Finalizer

A ~ClassName() method the GC calls before reclaiming the memory of an unreachable object. It runs non-deterministically and serves as a safety net for unmanaged resources.

Fine-grained locking

A technique where a structure is protected not by one lock but by several, each guarding its own part of the data. Threads working with different parts do not get in each other's way.

Fire-and-forget

Starting an asynchronous operation without waiting for its result. Without explicit handling, its exceptions are lost or crash the process.

FireDAC

RAD Studio's universal data access library with TFDConnection, TFDQuery and TFDStoredProc components. It provides fetch control, Array DML, macros, connection pooling and tracing.

FireDAC macro (substitution variable)

Substitution into the SQL text before it is sent to the server: &Name or !Name. Used where a parameter does not work, such as a table name; user input never goes into a macro.

Flaky test

A test that sometimes passes and sometimes fails on the same code. Typical causes are time, shared state, parallelism and external services.

Flexbox

A one-dimensional CSS layout module: the children of a display: flex container line up in a row or column and share free space by flex-grow and flex-shrink.

Fluent API

Configuring the EF Core model in code, in OnModelCreating or in IEntityTypeConfiguration<T> classes: HasKey, HasMaxLength, HasOne().WithMany(). It takes precedence over attributes and conventions.

FluentAssertions

An assertion library in the result.Should().Be(5) style. Up to and including version 7 it is Apache 2.0; from version 8 (2025) it uses the Xceed license, paid for commercial use.

Foreground and background threads

A process does not exit while at least one foreground thread is running, while background threads stop together with it. Pool threads are background threads; new Thread is foreground by default.

Form file (.dfm)

A resource describing a form's components and the values of their published properties. It is linked to the unit by the {$R *.dfm} directive and read when the form is created; it can be text or binary.

Forward secrecy

The property that session keys come from a one-time Diffie-Hellman exchange. A certificate private key stolen later cannot decrypt traffic recorded earlier.

Forwarded headers (X-Forwarded-*)

The X-Forwarded-For, X-Forwarded-Proto and X-Forwarded-Host headers in which a proxy passes the original client IP, scheme and host. In ASP.NET Core they are applied by UseForwardedHeaders, which trusts only known proxies.

Four golden signals

The metrics from the Google SRE Book for a user-facing service: latency, traffic, errors and saturation. If you can measure only four things, measure these.

Fragile base class

A problem of implementation inheritance: a seemingly harmless change to a base class breaks subclasses, because they depend on its internals, such as which methods call each other.

Frame (TFrame)

A container with components and code that is designed separately and embedded in several forms. Changes to the frame show up everywhere it is used, except properties overridden on a form.

Free-threaded build (free threading)

A CPython build without the GIL (PEP 703, python3.13t and later): threads run Python code in parallel. Experimental in 3.13, officially supported since 3.14, but not the default.

Frozen collection

FrozenDictionary<TKey, TValue> and FrozenSet<T> from .NET 8: immutable collections that are slow to build but very fast to look up. A good fit for lookup tables created once at startup.

Functional dependency

A relationship X → Y: the value of column set X uniquely determines the value of Y. Normal forms are defined in terms of functional dependencies.

Gang of Four (GoF)

Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, authors of the book "Design Patterns" (1994), which describes 23 classic patterns in three groups.

Garbage collector (GC)

The part of the CLR that allocates memory on the managed heap and automatically frees memory of objects unreachable from roots. In .NET it is a generational, compacting tracing collector.

GC generation

A logical part of the managed heap by object age: 0 is new objects, 1 is objects that survived one GC, 2 is long-lived ones. Young generations are collected often and fast; a generation 2 GC is a full GC.

GC root

A reference the GC starts traversing the object graph from: a thread local or register, a static field, a GC handle, a finalization queue entry. Anything unreachable from roots is garbage.

GC.Collect

A manual garbage collection. In application code it almost always hurts: survivors are promoted to older generations and the self-tuned budgets are thrown off. It belongs in tests, benchmarks and diagnostics, usually next to GC.WaitForPendingFinalizers.

Generator

A function with yield: calling it returns an iterator that runs the body in steps, up to the next yield. Values are produced lazily, one at a time.

Generic constraint

A requirement on a type parameter in a where T : ... clause: reference or value type, a constructor, a base class, an interface. It lets the compiler call the corresponding members on T.

Generic Host

The IHost object that owns configuration, logging, the DI container and hosted services, and manages app startup and shutdown. ASP.NET Core and Worker Service are built on it.

Generics in Delphi

Generic types and methods with type parameters: TList<T>, TDictionary<TKey, TValue>. Introduced in Delphi 2009; the compiler generates code for each set of type arguments and checks constraints such as class or constructor.

GIL (Global Interpreter Lock)

CPython's global interpreter lock: only one thread executes bytecode at any moment. It is released on blocking I/O and inside C extensions.

GIN index

A Generalized Inverted Index: for each element — a word, an array element, a JSONB key — it stores the list of rows where it occurs. Fast at answering "contains", but expensive to write.

GiST index

A Generalized Search Tree — a framework for indexes on geometry, ranges and full-text data. Supports overlap, containment and nearest-neighbor search.

git bisect

A command for binary-searching the commit that introduced a bug: you mark a good and a bad version, and Git halves the range at each step. git bisect run checks commits automatically with a script or test.

git filter-repo

A tool for rewriting a repository's entire history: it removes files, replaces strings and changes paths. The Git docs recommend it over the pitfall-ridden git filter-branch, including for removing secrets.

Git Flow

Vincent Driessen's branching model (2010): long-lived main and develop, plus feature/*, release/* and hotfix/* branches. Designed for versioned products; for continuous delivery the author recommends a simpler model.

Git LFS (Large File Storage)

A Git extension for large binary files: the repository stores a small text pointer, while the content lives on a separate LFS server and is downloaded only for the versions you need.

Git object (blob, tree, commit, tag)

The unit of storage in .git/objects, addressed by the hash of its contents: blob — file contents, tree — a directory, commit — a snapshot with metadata, tag — an annotated tag. Objects are immutable.

git push --force-with-lease

A forced push that overwrites the server branch only if it still points to the same commit as your remote-tracking branch. It protects against wiping out other people's commits after a rebase.

GitHub Flow

A simple branching model: a short branch off main, a pull request with review and checks, a merge into main and deleting the branch. main is always deployable.

global.json

A repository file that pins the .NET SDK version used for builds and the rule for matching it (rollForward).

gMSA (group Managed Service Account)

A domain service account whose password AD generates and rotates itself. Used by IIS app pools, Windows services and Windows containers; the long random password protects against Kerberoasting.

God object

An anti-pattern: a single class knows and does too much — validation, calculations, data access, integrations. It changes in every task and drags dozens of dependencies along.

Google Zanzibar

Google's global authorization system, described in a USENIX ATC 2019 paper. It stores relationships as "object#relation@user" tuples, serves Drive, YouTube, Cloud and other services, and became the model for OpenFGA and SpiceDB.

Graceful shutdown

A shutdown in which the app stops accepting new work, finishes what it started and releases resources instead of being cut off mid-operation. Its duration is bounded by HostOptions.ShutdownTimeout.

Graph

A set of vertices and the edges between them: cities and roads, jobs and dependencies, users and connections. Edges can be directed and weighted; .NET has no built-in graph type.

GROUPING SETS, ROLLUP and CUBE

GROUP BY extensions that compute aggregates over several column sets in one query: for example, per store, per region and a grand total. The GROUPING() function tells a total row apart from a regular group.

Groups overage

Microsoft Entra ID behavior when a user has more groups than fit in a token (200 for JWT, 150 for SAML): the groups claim is omitted, and a link to Microsoft Graph is sent instead.

gRPC

A remote procedure call framework over HTTP/2. The contract is described in a .proto file, server and client code is generated from it, and messages are encoded with Protobuf. Supports streaming in both directions and deadlines.

gRPC-Web

A variant of the gRPC protocol that works from browsers over HTTP/1.1 and HTTP/2. Supports only unary calls and server streaming; in ASP.NET Core it is enabled with the Grpc.AspNetCore.Web package.

Guard in NestJS

A class with a canActivate method that decides whether a request reaches the handler. It sees the ExecutionContext and route metadata, so authentication and role checks live there; false results in a 403.

Hangfire

A background job library for .NET: it serializes method calls into storage (SQL Server, Redis), executes them on Hangfire servers, retries on failure and shows everything in a web dashboard.

Hash code (GetHashCode)

A number hash tables (Dictionary, HashSet) use to pick a bucket. Objects that are equal by Equals must have equal hash codes.

Hash collision

When different keys produce the same hash code or land in the same bucket of a hash table. Collisions are unavoidable and are resolved by comparing with Equals, but too many of them degrade lookup to O(n).

Hash Match

A join or aggregation through a hash table: the smaller input is loaded into memory and the larger one is probed against it. Suits large unsorted inputs but requires a memory grant.

Hash table

A data structure that uses a key's hash code to compute an item's slot in an array and finds it in O(1) on average. In .NET, Dictionary<TKey, TValue> and HashSet<T> are built on it.

Hashable object

An object whose hash never changes during its lifetime and that compares via __eq__. Only such objects can be dict keys and set elements.

HATEOAS

A REST principle where a response contains links to related resources and available actions, and the client follows them instead of building URLs itself.

Health check

An HTTP endpoint that reports an app instance's state: Healthy, Degraded or Unhealthy. The load balancer and orchestrator use it to decide whether to send traffic and whether to restart the process.

Health check publisher

An IHealthCheckPublisher implementation that an ASP.NET Core background service calls periodically with the health report. Used to push status to logs, metrics or a monitoring system without external polling.

Heap

A table without a clustered index. Rows are stored in no particular order, and nonclustered indexes point to them by physical address, the RID — file, page, slot.

Heap compaction

A GC phase that slides surviving objects next to each other and updates every reference to them. It removes fragmentation but costs more than just putting dead space on a free list (sweeping).

Heap hard limit (GCHeapHardLimit)

The maximum amount of memory the GC heap may take. In a container with a memory limit it defaults to the larger of 20 MB and 75% of the limit; set it with GCHeapHardLimit or GCHeapHardLimitPercent.

Heap snapshot

A .heapsnapshot file with every object in the V8 heap and the references between them. Two snapshots are compared in Chrome DevTools to find growing objects and what retains them.

Heap table

A table whose rows are stored without ordering by a key. In PostgreSQL every table is a heap, and indexes, the primary key included, point to the physical address of a row version (ctid).

Heapsort

A sort that builds a heap from the array and repeatedly extracts its top element. O(n log n) in the worst case with O(1) extra memory, but unstable.

Hierarchical injectors

How DI works in Angular: element injectors mirror the component tree, and above them sit the route, root and platform injectors. A provider is looked up bottom-up, and where it is declared decides who shares the instance.

Higher-order mapping operators (switchMap, mergeMap, concatMap, exhaustMap)

RxJS operators that map each value to an inner stream, such as an HTTP request, and decide what to do if the previous one hasn't finished: cancel it, run in parallel, queue, or ignore the new one.

Hill climbing (thread injection algorithm)

A .NET thread pool heuristic that varies the number of worker threads and keeps the count with higher throughput. It works gradually, so it does not make up for a sudden shortage of threads.

Hoisting

Declarations are processed before the code of a scope runs. Function declarations are available in full, var with the value undefined, while let, const and class stay in the temporal dead zone until their declaration line.

Horizontal scaling (scale out)

Increasing throughput by adding service instances rather than making one server bigger (vertical scaling, scale up). It requires instances that keep no local state.

Hosted service (IHostedService)

A service whose lifetime the .NET host manages: StartAsync is called when the app starts and StopAsync when it stops. It is registered with AddHostedService as a singleton; the web server runs on the same mechanism.

Hosting environment

The name of the runtime environment — Development, Staging, Production or a custom one. Set by ASPNETCORE_ENVIRONMENT or DOTNET_ENVIRONMENT, Production by default; it selects appsettings.{Environment}.json and the app's behavior.

Hot path

Code that runs very often and noticeably affects performance. Only there are micro-optimizations like ValueTask justified.

HOT update (heap-only tuple)

An update in which the new row version goes on the same page and creates no index entries. It is possible when no indexed column changed and the page has free space.

HSTS (HTTP Strict Transport Security)

The Strict-Transport-Security header, after which the browser talks to the site only over HTTPS for max-age. With preload the domain can join a list built into browsers.

HTTP

The request-response protocol over TCP that the web runs on: the client sends a method, path and headers, the server answers with a status code and a body. It keeps no state between requests, so sessions live in cookies, tokens or headers.

HTTP interceptor

A function in the HttpClient chain that sees every request and response: it adds headers and tokens, logs and handles errors. Since Angular 15 interceptors can be functions registered with withInterceptors.

HTTP.sys

A Windows kernel-mode driver that accepts HTTP requests for IIS and other servers. ASP.NET Core has a server of the same name — a Windows-only alternative to Kestrel with port sharing and Windows authentication.

HttpClient

The .NET class for outgoing HTTP requests. Creating one per request piles up sockets in TIME_WAIT; a single static instance never notices a DNS change. The supported way is IHttpClientFactory.

HybridCache

A caching API from .NET 9: L1 in process memory plus L2 in IDistributedCache, stampede protection, serialization and tag-based invalidation. The implementation ships in the Microsoft.Extensions.Caching.Hybrid package.

Hydration

Bringing the app to life in the browser on top of HTML rendered on the server (SSR): Angular reuses the existing DOM instead of building it again. Stable since v17; incremental hydration since v20.

Hydration

Attaching React to HTML that came from the server: React builds the component tree and wires event handlers to the existing markup. The first client render must match the server HTML.

I/O-bound operation

An operation whose time is spent waiting for input/output — network, disk, database — rather than on CPU work. It is run asynchronously with await without occupying a thread.

IActionResult (action result)

The object an action returns instead of a finished response. The framework executes it after the action: ViewResult renders a view, RedirectResult sends a redirect.

IAsyncDisposable

An interface with a DisposeAsync method returning ValueTask, for asynchronous cleanup such as flushing a buffer or closing a connection. Used through await using (C# 8, .NET Core 3.0).

IConfiguration

The interface for reading app configuration: a flat set of string key-value pairs with colon-separated hierarchical keys such as Payments:TimeoutSeconds.

ID token

A JWT that OpenID Connect issues to the client after sign-in: who the user is (sub), who issued the token (iss), which client it is for (aud) and when. It is never sent to APIs.

Idempotency

The property of an operation where running it again gives the same result as running it once. It is needed wherever retries are possible: background jobs, messages, HTTP retries.

Idempotency key

A unique key the client sends with a request, usually in the Idempotency-Key header. The server stores the result of the first run and returns it for a retry with the same key without running the operation again.

Idempotent producer

A Kafka producer mode (enable.idempotence=true) where the broker drops resends based on the producer id and sequence number. It removes duplicates from retries and preserves order; it's off by default in Confluent.Kafka.

Identity column (GENERATED AS IDENTITY)

A column whose values the database generates from a sequence attached to it. In PostgreSQL it is declared as GENERATED ALWAYS AS IDENTITY or GENERATED BY DEFAULT AS IDENTITY (since version 10) and replaces the legacy serial; the equivalent of IDENTITY(1,1) in SQL Server.

Identity map

The session's "primary key → object" dictionary: one database row is represented in the session by one object, and a repeated session.get for the same key does not hit the database.

Identity resolution

The guarantee that one database row is represented by one object in the context. EF Core tracking queries return the instance that's already loaded; AsNoTracking creates a new object for every occurrence of a row.

IDisposable

An interface with a single Dispose method for deterministic release of resources: files, sockets, connections, unmanaged memory. Called explicitly or through using.

IDOR (insecure direct object reference)

Accessing someone else's object by changing an identifier in the request, for example /orders/43 instead of /orders/42, when the server doesn't check the owner.

IExceptionHandler

An interface (.NET 8+) for handling known exceptions in one place. Implementations are registered with AddExceptionHandler<T>() and called in order by the UseExceptionHandler middleware until one returns true.

IHostApplicationLifetime

A service exposing the app's lifecycle events — ApplicationStarted, ApplicationStopping, ApplicationStopped — and a StopApplication() method for stopping from code.

IHostedLifecycleService

An extension of IHostedService from .NET 8 with StartingAsync, StartedAsync, StoppingAsync and StoppedAsync, which run before and after services start and stop.

IHostLifetime

The component that decides when the host starts and when it begins shutting down. ConsoleLifetime reacts to Ctrl+C and SIGTERM, WindowsServiceLifetime to Windows service commands.

IHttpClientFactory

The HttpClient factory in .NET: it reuses connection handlers, manages their lifetime and lets you configure named and typed clients with a handler chain, for example resilience.

IHubContext

A service for sending messages to a hub's clients from outside the hub: a controller, an endpoint or a background job. It provides Clients and Groups but has no notion of a caller.

IInterface

The base Delphi interface that all others inherit from; on Windows it is the same as the COM interface IUnknown. It declares QueryInterface to ask for other interfaces, and _AddRef and _Release for reference counting.

IIS (Internet Information Services)

The Windows web server. ASP.NET Core runs behind it through the ANCM module: IIS takes the request and hands it to Kestrel inside the same process (in-process) or to a separate app process (out-of-process).

IIS application pool

A group of IIS sites served by w3wp.exe worker processes with shared settings: identity, bitness, recycling. In-process ASP.NET Core needs a separate pool for each app.

IL (intermediate language, CIL)

The platform-independent, stack-based bytecode that C#, F# and VB.NET compile to. Before execution the JIT or an AOT compiler turns it into machine code.

Image layer

A set of file system changes produced by one Dockerfile instruction (RUN, COPY, ADD). Layers are read-only, addressed by hash and cached: unchanged layers are not rebuilt.

IMemoryOwner<T>

The owner interface for a Memory<T> buffer: whoever holds the reference calls Dispose or hands ownership on. It is returned, for example, by MemoryPool<T>.Shared.Rent().

IMiddleware

A middleware interface with an InvokeAsync(HttpContext, RequestDelegate) method. Such middleware is registered in DI and created per request, so it can take scoped dependencies in its constructor.

IMiddlewareFactory

The factory UseMiddleware uses to get IMiddleware instances per request. The default implementation resolves them from the request's DI scope; a custom one plugs in a third-party container.

Immutable collection

A collection from System.Collections.Immutable that cannot change after creation: Add and Remove return a new instance. It is safe to share across threads without locks.

Immutable type

A type whose instance state cannot change after creation: "modifying" methods return a new instance. Examples: string, DateTime, readonly record struct.

Impersonation

Running code as another Windows user. In ASP.NET Core it's WindowsIdentity.RunImpersonated and RunImpersonatedAsync, Windows only.

Implementation factory

A Func<IServiceProvider, T> delegate passed to AddSingleton, AddScoped or AddTransient instead of an implementation type. The container calls it to create the service and disposes of the returned object as if it had created it itself.

Implicit conversion

A type conversion SQL Server performs on its own when comparing values of different types; the plan shows it as CONVERT_IMPLICIT. If the column is converted rather than the parameter, an index seek on that column is usually impossible.

In-memory cache (IMemoryCache)

A cache inside the app process: it stores objects by reference, without serialization. Every app instance has its own, and it is lost on restart.

In-process COM server

A COM object in a DLL that is loaded into the client's process. Its bitness must therefore match the client's, unlike an out-of-process server in an EXE.

In-process hosting

An IIS hosting model in which the app runs inside w3wp.exe and requests are accepted by IISHttpServer instead of Kestrel. The default model since ASP.NET Core 3.0.

In-sync replicas (ISR)

Partition replicas that are caught up with the leader. With acks=all a write is acknowledged once all ISR have it, and min.insync.replicas sets the minimum number required.

Inbound claims mapping (MapInboundClaims)

Renaming short token claims to long WS-Federation claim types: sub becomes ClaimTypes.NameIdentifier. On by default in JwtBearerOptions; turned off with MapInboundClaims = false.

Inbox (idempotent consumer)

A receiver-side deduplication pattern: the id of a processed message is stored in a table in the same transaction as the changes, and a repeat with the same id is skipped.

Included columns (INCLUDE)

Non-key columns of a nonclustered index stored only at the leaf level. They are not sorted or used for seeking, but they cover a query without widening the key.

Index (staging area)

The area between the working tree and the repository: git add puts changes there, and they go into the next commit. It lets you commit only part of your edits.

Index fragmentation

A mismatch between the logical and physical order of index pages caused by page splits. It hurts large sequential reads; on SSDs page density usually matters more.

Index Seek and Index Scan

The two ways to read an index. A seek walks down the B-tree to the required key range and reads only that; a scan reads the whole index or table.

Indexed view

A view with a unique clustered index: SQL Server stores its result and updates it in the same transaction as the base tables. It speeds up aggregates at the cost of more expensive writes.

Inheritance

A mechanism where a new class gets the members of a base class and can extend or override them. In C# a class has one base class and any number of interfaces.

Injection scope

A provider's lifetime in NestJS: DEFAULT — one instance per application, REQUEST — one per request, TRANSIENT — a dedicated instance for each consumer. The REQUEST scope spreads to everything that depends on such a provider.

Injection token

A key the NestJS container uses to find a provider when a class type isn't enough: a string, a Symbol or an abstract class. Registered as { provide: TOKEN, useClass: Impl } and injected with @Inject(TOKEN).

Inline table-valued function (inline TVF)

A function of the form RETURNS TABLE AS RETURN (SELECT ...). The optimizer substitutes its text into the query like a parameterized view and builds a single plan.

Inline variable

A variable declared among the statements: var I := 0;. It is visible to the end of its begin..end block, and its type can be inferred from the initializer. Introduced in Delphi 10.3 Rio.

Inner join (INNER JOIN)

A join that returns only the pairs of rows from two tables that satisfy the condition in ON. Rows without a match do not appear in the result.

INP (Interaction to Next Paint)

The delay from a click, tap or key press to the next frame, worst of the visit. Good is 200 ms or less. It replaced FID as a Core Web Vital in March 2024.

Insecure deserialization

The deserializer creates types named in the data itself, and the attacker picks a type whose constructor or setter runs code they want. Classic examples are BinaryFormatter and TypeNameHandling in Newtonsoft.Json.

Integration test

A test that checks several parts of the system together, for example the HTTP pipeline, DI and a real database. Slower than a unit test, but it catches bugs at the seams.

Intent lock

A lock at an upper level of the hierarchy (page, table) that signals S or X locks below it. It lets the engine quickly tell whether the whole table can be locked without checking every row.

Interactive rebase

git rebase -i: a rebase in which you edit the list of commits — reorder, combine (squash, fixup), reword or drop them. Used to tidy your own branch before a pull request.

Interceptor in NestJS

A class with an intercept method that runs code before and after the handler and works with its result as an RxJS Observable. Used for logging, timing, caching and reshaping responses.

Interface GUID

A 16-byte identifier in an interface declaration: ['{...}']. It is required for QueryInterface, the as operator and the Supports function; without it the compiler reports error E2232. The editor generates one with Ctrl+Shift+G.

Interface Segregation Principle (ISP)

The I in SOLID: a client should not depend on methods it does not use. A wide interface is split into several narrow ones shaped by client needs.

Interlocked

A static class of atomic operations on variables: Increment, Add, Exchange, CompareExchange and more. Every operation is also a full memory barrier.

Interning

Keeping one object per value: CPython caches integers from −5 to 256 and interns some strings, and sys.intern does it explicitly. It is an implementation detail; do not rely on is for values.

Interpolated string handler

A C# 10 mechanism: a $"..." expression compiles into AppendLiteral and AppendFormatted<T> calls on a special type such as DefaultInterpolatedStringHandler. Arguments are not boxed, and the buffer comes from a pool.

Introsort (introspective sort)

The hybrid sort behind Array.Sort: a quicksort that switches to insertion sort on small partitions and to heapsort when partitioning gets too deep. O(n log n) in the worst case, unstable.

Invariance

A generic type accepts only the exact argument it was declared with: List<string> cannot be used as List<object>. All classes and structs, and interfaces without in/out, behave this way.

Inversion of control (IoC)

A principle where control over program flow or object creation is handed to a framework: your code does not call the library, the framework calls your code. DI is a special case of IoC.

IOptionsMonitor<T>

Singleton access to up-to-date settings: CurrentValue returns the current value, and OnChange subscribes to configuration changes. Suitable for singleton services.

IOptionsSnapshot<T>

Scoped access to settings: the object is recreated in every scope, that is, on every request, and sees reloaded configuration. Supports named options.

IServiceScopeFactory

A singleton service that creates new scopes. Singletons and background services use it to get scoped services: CreateScope() or, since .NET 6, CreateAsyncScope().

Isolation level

A transaction setting that defines which changes of concurrent transactions it sees and which anomalies are allowed. The SQL standard defines four levels: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE.

Iterator

A method with yield return that returns the items of a sequence one at a time. The compiler turns it into a class implementing IEnumerable<T> and IEnumerator<T>.

IUserIdProvider

An interface that determines a connection's user id for Clients.User. By default it reads the ClaimTypes.NameIdentifier claim.

IValueTaskSource

The interface of a reusable asynchronous operation object that lets ValueTask work without allocations. Used in high-performance APIs such as Socket.

JIT compiler (just-in-time)

The part of the CLR that translates a method's IL into machine code on its first call, for the specific CPU. In .NET it is RyuJIT.

Jitter

A random addition to the pause between retries. Without it, clients that failed together also retry together and hit the recovering service in a synchronized wave.

JSON

A text data format built from objects, arrays, strings, numbers, true, false and null. It carries no schema of its own, so the contract is described separately — OpenAPI or JSON Schema — and parsed in .NET with System.Text.Json.

jsonb

The PostgreSQL type for JSON in parsed binary form: no duplicate keys and no original order, but with search operators (@>, ?, @?) and GIN index support. The json type, by contrast, stores the original text.

jsonpath (SQL/JSON path)

The path language from the SQL/JSON standard for selecting and filtering values inside JSON, such as $.items[*] ? (@.price > 10). In PostgreSQL it is understood by the @? and @@ operators and by functions such as jsonb_path_query, JSON_VALUE and JSON_EXISTS.

JSX

A JavaScript syntax extension for writing markup inside code: <h1>{title}</h1>. The compiler turns it into calls that create React elements.

Just-in-time access

Permissions that last a limited time: granted with an end date or activated on request for a few hours. Example: Microsoft Entra Privileged Identity Management.

JWE (JSON Web Encryption)

A format for encrypted data (RFC 7516). In compact form it has five parts: header, encrypted key, initialization vector, ciphertext and tag. It hides the payload from everyone but the key holder.

JWKS (JSON Web Key Set)

The issuer's set of public keys in JSON (RFC 7517). Each key carries a kid, which the validator uses to pick the key for a particular token's signature.

JWS (JSON Web Signature)

A format for signed data (RFC 7515). In compact form it is three base64url parts: header, payload and signature. It protects integrity and authenticity but does not hide the content.

JWT (JSON Web Token)

A compact token made of a JSON header, a JSON set of claims and a signature, each base64url-encoded and joined by dots. Defined in RFC 7519; most often used as an access token for APIs.

KDC (Key Distribution Center)

The Kerberos ticket-issuing service. In Active Directory it runs on every domain controller: it checks the user's password and issues TGTs and service tickets.

Kerberos

A ticket-based network authentication protocol (RFC 4120). The KDC checks the password once, and then the client presents services with tickets encrypted with their keys. The primary sign-in protocol in an Active Directory domain.

Kestrel

The cross-platform web server built into ASP.NET Core. It runs inside the app process, speaks HTTP/1.1, HTTP/2 and HTTP/3, and feeds requests into the middleware pipeline.

Key Lookup

A plan operator that, for every row found in a nonclustered index, seeks into the clustered index for the missing columns. Its heap counterpart is the RID Lookup. Cheap for dozens of rows, expensive for thousands.

Key-range lock

A lock on a range of index keys between existing rows. SERIALIZABLE or the HOLDLOCK hint takes it so that no row can be inserted into a range that was read, which prevents phantoms.

Keyed services

Registrations with a key, added in .NET 8: AddKeyedSingleton, AddKeyedScoped, AddKeyedTransient. You get a specific implementation with the [FromKeyedServices(key)] attribute or GetRequiredKeyedService.

Keyset pagination (cursor pagination)

Paging by the last key of the previous page: WHERE id > @after ORDER BY id. It uses an index and takes the same time on any page, but cannot jump to a page by number.

Keytab

A file with the long-term Kerberos keys of a service account. On Linux, GSSAPI uses it to decrypt tickets without a password; the KRB5_KTNAME variable sets its path. It must be reissued when the account password changes.

Keyword-only parameter

A parameter after * in a signature that can only be passed by name. Parameters before / (since Python 3.8) are the opposite: positional-only.

KISS (Keep It Simple, Stupid)

An engineering simplicity principle: among working solutions, pick the simplest. The phrase is attributed to Kelly Johnson, an engineer at Lockheed.

KRaft

Kafka's built-in Raft-based consensus protocol that controllers use to store cluster metadata. Since Kafka 4.0 it's the only mode; ZooKeeper is no longer used.

Kubernetes (K8s)

A container orchestrator: it keeps the requested number of replicas, restarts failed pods, hands out configuration and secrets, and balances traffic through services. A pod is disposable and may be stopped at any moment, so state is kept outside it.

LARGEADDRESSAWARE

A flag in the EXE header that lets a process use addresses above 2 GB. A 32-bit process with this flag gets up to 4 GB of address space on 64-bit Windows.

launchSettings.json

A file with launch profiles for local development: environment, URLs, variables. Used by Visual Studio and dotnet run, and not deployed when the app is published.

Law of Demeter

The rule "talk only to your immediate friends": a method calls methods of its own object, its parameters, objects it creates and its fields, but does not walk chains like a.B.C.D().

Layered architecture (n-tier)

Code is split into horizontal layers: presentation, business logic, data access. Each layer calls only the one below it, so business logic depends on the data layer.

Layout

The common page shell: header, menu, footer, styles and scripts. A view is inserted into it with @RenderBody(), and named fragments through sections.

Layout thrashing

Interleaving style writes with geometry reads (offsetHeight, getBoundingClientRect), which forces the browser to recompute layout synchronously on every read.

Lazy initialization

Creating an object on first access instead of up front. .NET provides Lazy<T> for this: by default it is thread-safe and caches an exception thrown by its factory.

Lazy loading

Loading a navigation property with a separate query the first time it's accessed. In EF Core it's enabled with the Microsoft.EntityFrameworkCore.Proxies package and UseLazyLoadingProxies(), and it easily leads to N+1.

Lazy-loaded route

A route whose code is split into a separate chunk and loaded on first navigation, via loadComponent or loadChildren with a dynamic import(). It shrinks the initial bundle.

LCP (Largest Contentful Paint)

The time from the start of navigation until the largest image or text block in the viewport is rendered. Good is 2.5 seconds or less.

LDAP

A protocol for accessing directories, including Active Directory: searching users, groups and attributes. In .NET the cross-platform client is System.DirectoryServices.Protocols.

Lexical scope

The rule that a variable's visibility is determined by where it is declared in the code, not where it is called from. JavaScript has global, module, function and block scopes.

libuv

The cross-platform asynchronous I/O library in C that Node.js is built on. It provides the event loop, non-blocking sockets via epoll, kqueue and IOCP, timers, and a thread pool for files and DNS.

libuv thread pool (UV_THREADPOOL_SIZE)

A process-wide thread pool where libuv runs operations that have no non-blocking OS API: files, dns.lookup, some crypto and async zlib. 4 threads by default, at most 1024, sized with the UV_THREADPOOL_SIZE environment variable.

Lifespan

An async context manager of a FastAPI application: code before yield runs when the process starts, code after it runs on shutdown. It replaces the deprecated startup and shutdown events.

Lifting state up

Moving state into the closest common parent of the components that need it. The parent passes the value and a setter down via props.

Linearizability

The strongest consistency guarantee for a single object: the system behaves like one copy, and every read after a completed write sees it. This is the C in the CAP theorem.

Linked list

A chain of nodes where each node holds an item and references to its neighbours. Inserting or removing at a known node is O(1), but there is no indexed access. In .NET it is the doubly linked LinkedList<T>.

Linked token source

A CancellationTokenSource created with CreateLinkedTokenSource: it is canceled together with any of its parent tokens. It must be disposed, or its registration on the parent stays behind.

LINQ (Language Integrated Query)

A set of methods and C# query syntax for filtering, projecting, sorting and grouping data. LINQ to Objects works with in-memory IEnumerable<T>, while providers such as EF Core work with IQueryable<T>.

Linux namespaces

A Linux kernel mechanism that gives a process its own view of resources: the process list, network, mount points, hostname. The foundation of container isolation.

Liskov substitution principle (LSP)

A SOLID principle: an object of a subtype must work anywhere the base type is expected without breaking the program's correctness. The classic counterexample is a square derived from a rectangle.

List pattern

A pattern such as [1, .., var last] (C# 11) that matches elements of an array, list or Span<T> by position; .. stands for any number of elements.

Liveness probe

A periodic Kubernetes check of whether the process is alive. After several consecutive failures the kubelet restarts the container, so it should not check external dependencies.

Load balancer

A component that spreads incoming traffic across service instances and takes unhealthy ones out of rotation. L4 works with TCP/UDP connections, L7 with HTTP requests.

Load testing

Testing a service under a fixed or growing request rate to find its throughput limit, latency growth and the point of degradation. Tools include k6, NBomber, JMeter and bombardier.

Load watermark

The saved boundary of the last load: the highest rowversion or modified date. The next run reads only the rows past that boundary — this is how an incremental load works.

Lock escalation

Replacing many fine-grained locks with a single table or partition lock. SQL Server attempts it when one statement holds 5,000 or more locks on a single object.

Lock mode

The type of a lock, which defines what other locks it is compatible with. The main SQL Server modes are S (read), U (read before modifying), X (modify) and the intent modes IS, IX, SIX.

Lock-free

An algorithm that uses no locks and is built on atomic operations such as CompareExchange. At least one thread always makes progress, even if others are suspended.

Log category

The string a logger is created with; for ILogger<T> it is the full name of type T. Log levels in configuration are set by category prefix.

Log compaction

A Kafka topic retention policy (cleanup.policy=compact) that keeps the latest record for each key. A record with a key and an empty value (a tombstone) deletes the key.

Log scope

A block opened with ILogger.BeginScope whose properties are added to every entry inside it. It is stored in an AsyncLocal, so it survives await.

Logging provider

An ILoggerProvider implementation that delivers entries to a specific destination: the console, Debug, EventSource, a file or an external system. One logger writes to all registered providers.

Logical query processing order

The order in which SQL binds the parts of a SELECT: FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY. It defines which names are visible at each step; the physical execution order is chosen by the optimizer.

LOH (large object heap)

The heap for objects of 85,000 bytes or more, usually large arrays. It is collected only with generation 2 and isn't compacted by default, so it tends to fragment.

Long Polling

Receiving messages through an HTTP request that the server holds open until data appears. After the response the client immediately sends the next request.

Lookup field

A field whose value comes from another dataset by key: the KeyFields values are looked up in the LookupKeyFields of LookupDataSet, and LookupResultField is displayed.

Lost update

An anomaly in which two transactions read the same value, change it and write it back, and the last write overwrites the first one's change. Typical of the "read in the app, write the new value" pattern.

LTS (Long Term Support)

A .NET release supported for three years. These are the even versions: .NET 8, .NET 10.

Managed heap

The memory area where the CLR allocates reference-type objects. Memory there is allocated and reclaimed by the garbage collector.

Managed identity

An identity that the cloud platform issues to the app itself. With it, the app accesses the secret store and other services without a password in its configuration.

Mapped type

A type of the form { [K in keyof T]: ... } that iterates over keys and builds a new object type from them. It can add or remove readonly and ? and rename keys with as.

Master theorem

A ready-made solution for recurrences of the form T(n) = a·T(n/b) + f(n), which describe divide-and-conquer algorithms. For example, merge sort's T(n) = 2T(n/2) + O(n) gives O(n log n).

Media query

An @media condition under which styles apply: viewport width, orientation, device type, dark mode. The basis of responsive design.

Memoization

Caching a function's results by its arguments: a repeated call with the same arguments takes the answer from a dictionary or an array. It is top-down DP — recursion plus a cache.

Memory barrier

An instruction that stops the compiler and the CPU from moving memory accesses across it. In .NET, Interlocked and Thread.MemoryBarrier provide a full barrier.

Memory grant

Memory a query reserves before it starts for sorts and hash tables, based on the row estimate. An overestimate makes other queries wait for memory; an underestimate leads to a spill to tempdb.

Memory leak

Growing memory use caused by objects that are no longer needed but stay reachable, or by unreleased unmanaged resources. In .NET it is usually forgotten event subscriptions, static collections and unbounded caches.

Memory<T>

A regular struct that is a "window" onto contiguous memory (an array, a string or a MemoryManager<T>) and can be stored in fields and passed across await. The data is accessed through the .Span property.

MERGE

A statement that matches a source against a target table and, in one pass, runs UPDATE, INSERT or DELETE per WHEN branch. It needs a unique source and HOLDLOCK for concurrent upserts.

Merge Join

A join of two inputs sorted on the join key in a single pass over both. Very cheap when an index provides the order; otherwise the plan needs an expensive Sort.

Merge revision

An Alembic revision with two parents in down_revision that joins two migration branches into a single head. Created with alembic merge heads.

Merge sort

A sort that splits the array in half, sorts the halves and merges them. Always O(n log n) and stable, but needs O(n) extra memory.

Message broker

An intermediary server that accepts messages from senders, stores them and delivers them to receivers. The sender does not need the receiver to be available at send time. Examples are RabbitMQ, Apache Kafka and Azure Service Bus.

Message deduplication

Dropping redelivered messages by their id or business key. Usually a table of processed ids with a unique key, filled in the same transaction as the data change.

Message template

Log text with named placeholders, such as Order {OrderId} created. Values are stored as separate properties, and the template itself serves as the key for grouping identical events.

Method hiding

Declaring a member in a derived class with the same name as in the base class, without override; the new modifier makes it explicit. Which method runs is decided by the variable's static type.

Method resolution order (MRO)

The order of classes in which Python looks up an attribute under inheritance, available as Cls.__mro__. It is built by C3 linearization, and super() follows it.

Metric cardinality

The number of unique combinations of a metric's label values, that is, the number of time series. A label with a user id or a full URL produces millions of series and overloads storage.

Metric instrument

A System.Diagnostics.Metrics object that code records measurements through: Counter<T>, UpDownCounter<T>, Histogram<T>, Gauge<T> and their observable variants. Created from a Meter.

Microservices

An architecture style where the system consists of small services. Each owns its data, is released independently and talks to the others over the network.

Microsoft Entra ID

Microsoft's cloud identity service, formerly Azure Active Directory. It issues tokens over OIDC, OAuth 2.0, SAML and WS-Federation and syncs with on-premises AD through Entra Connect.

Microtask

A short callback that runs right after the current task, before the next task and before rendering: promise reactions, continuations after await, queueMicrotask. The microtask queue is drained completely.

Middleware

A component of the ASP.NET Core request pipeline. It receives an HttpContext, does its work and either passes the request to the next component or produces the response itself.

Middleware in NestJS

A function or a class implementing NestMiddleware that runs before guards and the handler with req, res and next, like Express middleware. It doesn't know which handler will run and is wired up in a module's configure method.

Migration bundle

An executable containing a project's migrations, built in CI with dotnet ef migrations bundle (EF Core 6+). It applies missing migrations without the SDK or source code.

Migrations history table

The __EFMigrationsHistory system table in the database listing applied migrations and the EF version. database update, bundles and idempotent scripts use it to find what hasn't been applied.

Minimal API

A way to define HTTP endpoints as delegates directly in Program.cs with MapGet, MapPost and similar methods, without controller classes. Introduced in .NET 6, supports Native AOT.

Misfire

A Quartz trigger fire that did not happen on time, for example while the scheduler was down. The misfire policy decides whether to run it immediately, once, or skip it.

Mock (mock object)

A test double the test uses to verify interactions: whether a call happened, how many times and with which arguments. In .NET they are created with NSubstitute and Moq.

Model binding

Filling action or handler parameters with values from the request: route, query string, headers, form or body. The source is set by [From...] attributes or inference rules.

Model snapshot

The <Context>ModelSnapshot.cs file describing the model after the latest migration. EF compares the current model with it to generate the next migration; in a team it's a source of conflicts.

ModelState

The ModelStateDictionary with binding and validation results in MVC. ModelState.IsValid tells whether there are errors, and the errors themselves are grouped by field.

Modular monolith

A single deployable application whose code is split into modules by business capability. A module exposes only a public contract to others and owns its data.

Monitor

The .NET class for mutual exclusion on any reference-type object. The lock statement on an ordinary object compiles to Monitor.Enter and Monitor.Exit in try/finally.

monkeypatch

A built-in pytest fixture for temporarily replacing attributes, dictionary items and environment variables. Everything is restored after the test.

mTLS (mutual TLS)

TLS where both sides present a certificate, not just the server. It encrypts traffic between services and proves exactly which service is calling.

Multi-stage build

A Dockerfile with several FROM instructions: some stages build, and only the result is copied into the last one via COPY --from. Build tools do not end up in the final image.

Multi-statement table-valued function (MSTVF)

A function that fills a table variable with several statements and returns it. The optimizer cannot see inside it and estimates the result at a fixed 100 rows (one row before SQL Server 2014).

Multi-targeting

Building one project for several TFMs via the TargetFrameworks property. The NuGet package gets a separate assembly for each target.

Multicast delegate

A delegate with an invocation list of several methods that run in order. Created with += or Delegate.Combine; it returns the last method's result.

Mutable object

An object whose state can be changed in place: list, dict, set. Immutable ones (int, str, tuple, frozenset) produce a new object on every "edit". Mutability is defined by the type.

Mutation testing

A way to assess test quality: a tool makes small changes to the code (mutants) and checks whether the tests fail. A surviving mutant is untested behavior. In .NET the tool is Stryker.NET.

Mutex

A mutual exclusion primitive backed by an OS kernel object. It is slower than lock, but a named Mutex is visible to other processes.

MVC (Model-View-Controller)

An architectural pattern that splits a UI app into a model (data and logic), a view (display) and a controller (request handling). In ASP.NET Core MVC the controller picks a view and passes it a model.

MVC filter

Code that MVC runs around an action at a specific stage: authorization, resource, action, exception or result. Unlike middleware, it sees the action context — arguments, ModelState and the result.

MVCC (multi-version concurrency control)

A transaction isolation approach in which the database keeps several versions of a row and each transaction sees the version that is current for its snapshot. Readers don't block writers and vice versa. In PostgreSQL old versions live in the table itself; in SQL Server with RCSI, in a separate version store.

N+1 problem

A data access anti-pattern: one query loads a list of N items, then one more query per item fetches related data. The typical cause is lazy loading inside a loop.

Name binding

Assignment in Python binds a name to an object rather than putting a value into a slot. b = a gives the same object a second name; no copy is made.

Named options

Several instances of one settings class under different names, for example for two payment gateways. Read through Get(name) on IOptionsSnapshot<T> or IOptionsMonitor<T>.

Naming convention (SQLAlchemy)

Name templates for indexes and constraints in MetaData(naming_convention=...). With them every constraint gets a predictable name, so Alembic can alter or drop it.

Narrowing

The compiler refining a variable's type from checks in the code: after typeof x === 'string', instanceof, in or a comparison with a literal, a narrower type is known inside the branch.

Native AOT

Publishing an app as a single native executable with no JIT and no installed .NET. Fast startup and less memory, but no dynamic assembly loading or Reflection.Emit, and trimming is mandatory.

NativeInt

A Delphi integer type whose size equals the pointer size: 4 bytes on Win32 and 8 bytes on Win64. It holds pointers and object references cast to a number.

Natural key

A key made of domain attributes: a product code, a tax ID, an ISO currency code. Meaningful to people, but it can change and is often long.

Negotiate (SignalR)

The client's first request, POST {hub}/negotiate. The server returns the connection id and token plus the available transports; Azure SignalR Service returns a redirect to its own URL.

Negotiate (SPNEGO)

A mechanism that selects the authentication protocol: Kerberos first, NTLM if that fails. In HTTP it's the WWW-Authenticate: Negotiate scheme (RFC 4559); in ASP.NET Core, the AddNegotiate() handler.

Nested groups

AD groups that are members of other groups. A member of a nested group gets the outer group's rights; the Windows token and the tokenGroups attribute already contain this transitive membership, while memberOf holds only direct membership.

Nested Loops

A join that looks up matches in the inner input for every row of the outer input. Efficient when the outer input is small and the inner input has an index on the join key.

NestJS lifecycle hooks

Methods on providers and modules that NestJS calls at startup (onModuleInit, onApplicationBootstrap) and shutdown (onModuleDestroy, beforeApplicationShutdown, onApplicationShutdown). Signal-triggered shutdown hooks only run after enableShutdownHooks().

NestJS module (@Module)

A class decorated with @Module() that groups the controllers and providers of one area, imports other modules and decides through exports what they may use. An application is a tree of modules rooted at AppModule.

NestJS provider

Anything the NestJS DI container can create and inject: a service, repository, factory or value. Usually a class with @Injectable() registered in a module's providers.

NestJS testing module (Test.createTestingModule)

The @nestjs/testing API that builds an application module for a test and lets you replace providers with overrideProvider. A full application for e2e tests is created from it as well.

ng update

The Angular CLI command that upgrades packages to the next major version and runs automatic code migrations. You can't skip versions: upgrades go one at a time.

NgRx SignalStore

A store from the @ngrx/signals package built on signals: state, computed values and methods are composed with withState, withComputed and withMethods. Much less code than the classic NgRx Store.

NgRx Store

Redux for Angular: global state changes only through actions and reducers, is read through selectors, and side effects live in effects. It gives tracing in Redux DevTools at the cost of boilerplate.

Node.js inspector (--inspect)

The built-in debugging and profiling protocol that Chrome DevTools and VS Code attach to. Enabled with the --inspect flag; by default it listens on 127.0.0.1:9229.

Node.js LTS

A Node.js release line with long-term support: Active LTS, then Maintenance, about 30 months in total. Up to Node 26, even-numbered versions became LTS; from Node 27 there is one major release a year, and each becomes LTS.

NOLOCK

A SQL Server table hint equivalent to READ UNCOMMITTED: reading without shared locks. It gives dirty data, missed and duplicated rows, and doesn't avoid schema locks or writer conflicts.

Non-functional requirements

Requirements about how the system works rather than what it does: load, latency, availability, consistency, security, data retention. They are what drives the architecture.

Non-repeatable read

An anomaly in which reading the same row again within a transaction returns a different value, because another transaction changed and committed it.

Non-root container

A container whose process does not run as root. Since .NET 8 the images include an app user (its UID is in APP_UID); you switch to it with USER $APP_UID, chiseled images do it by default.

Nonclustered index

A structure separate from the table: the index key plus a row pointer — the clustering key or a RID. Columns missing from the index are fetched from the table.

NonGC heap (frozen heap)

A memory area in .NET 8+ for objects that live for the whole process lifetime, such as string literals. The GC neither collects nor moves them, and GC.GetGeneration can return int.MaxValue for them.

Normalization

Designing tables so that every fact is stored in one place. The steps of normalization are called normal forms: 1NF, 2NF, 3NF, BCNF.

NTLM

A challenge-response Windows authentication protocol: the client proves knowledge of the password hash, and the server verifies the answer through a domain controller. It doesn't authenticate the server or support delegation, and it has been deprecated since 2024.

NuGet

The .NET package manager. A .nupkg package holds assemblies for different TFMs and a list of dependencies; dotnet restore downloads packages and picks their versions.

NuGet Audit

A check of packages against known vulnerabilities on every restore (.NET 8 SDK+). It reports warnings NU1901–NU1904 by severity; for net10.0 it checks transitive packages by default.

NuGet feed (package source)

A server or folder NuGet downloads packages from. A company's private feed (Azure Artifacts, GitHub Packages, BaGetter, Nexus) hosts internal packages and often proxies nuget.org.

Null-forgiving operator

The postfix !, as in x!.Length: it tells the compiler the expression is not null and suppresses the warning. Nothing is checked at run time.

Null-state analysis

The compiler's static analysis that tracks, for every expression, whether it is not-null or maybe-null, taking into account checks, assignments and attributes such as [NotNullWhen].

Nullable context

The setting that turns on ? annotations and null warnings: enable, warnings, annotations or disable. It is set with the <Nullable> element in the project and with #nullable directives in code.

Nullable reference types (NRT)

A C# 8+ feature: a reference type without ? is treated as non-nullable, and with ? as nullable. The compiler warns about possible NullReferenceExceptions; nothing is checked at run time.

Nullish coalescing (??)

a ?? b returns b only if a is null or undefined. Unlike ||, it does not replace 0, '' or false.

OAuth 2.0

A delegated access protocol (RFC 6749): the user lets an app call an API on their behalf, and the app gets an access token instead of the password.

Observability

The property of a system that lets you infer its internal state from the data it emits: metrics, traces and logs. Unlike monitoring, it also answers questions nobody thought of in advance.

Observable (RxJS)

A lazy stream of values over time: it starts working on subscription, can emit many values, an error or completion, and is cancelled by unsubscribing. In Angular, HttpClient, the router and forms return Observables.

Observer

A behavioral pattern: a publisher notifies all its subscribers about a change. In .NET this means events (event) and the IObservable<T> and IObserver<T> interfaces.

Offset

The number of a record within a Kafka partition. A consumer group commits the offset of the next unread record to the internal __consumer_offsets topic and resumes from it after a restart.

OLAP (online analytical processing)

An analytical workload: aggregates over millions of rows sliced by time, store and product. The data usually lives in a separate warehouse with a star schema or in cubes.

OLTP (online transaction processing)

A workload of many short transactions: a sale, an order, a payment. The schema is normalized, and queries read and write a few rows by key.

OnPush

A change detection strategy where a component is checked only on a new input by reference, an event inside it, markForCheck() or a change in a signal it reads. The default strategy since Angular 22.

Opaque token (reference token)

A random string with no data inside. The API learns what stands behind it through introspection at the authorization server: such a token can be revoked instantly but needs a network call.

Open/Closed Principle (OCP)

The O in SOLID: a module is open for extension and closed for modification. Formulated by Bertrand Meyer in 1988; Martin achieves it through abstractions and polymorphism.

OpenAPI

A standard for machine-readable HTTP API descriptions in JSON or YAML: paths, parameters, bodies, responses and schemas. Formerly called Swagger; documentation, clients and tests are built from it.

OpenID Connect (OIDC)

An authentication layer on top of OAuth 2.0: the openid scope, the ID token, the UserInfo endpoint and the discovery document. It lets an app learn who signed in.

OpenID Connect discovery document

JSON at /.well-known/openid-configuration on the authorization server: the issuer, endpoint addresses and jwks_uri. AddJwtBearer uses it to find the signature validation keys on its own.

OpenTelemetry

An open standard and set of SDKs for collecting three telemetry signals — traces, metrics and logs — and sending them to any compatible backend. In .NET it builds on Activity, Meter and ILogger.

OperationCanceledException

The exception an operation uses to report cancellation. An async method that ends with it gets the Canceled status; TaskCanceledException derives from it.

Optimistic concurrency

An approach to concurrent edits without holding locks: on save, the system checks that the row hasn't changed since it was read, and rejects the operation on conflict. The opposite is pessimistic locking of the row for the duration of the work.

Options pattern

Binding a configuration section to a typed settings class that services receive through DI as IOptions<T>, IOptionsSnapshot<T> or IOptionsMonitor<T>. Supports validation.

Orchestration

A way to coordinate a saga where an orchestrator stores its state, sends commands to the participants and triggers compensations on failure.

ORM (object-relational mapping)

A library that maps application classes to database tables: it generates SQL from operations on objects and turns result rows into objects. In .NET that's EF Core or NHibernate; Dapper is called a micro-ORM.

OSR (on-stack replacement)

Replacing a method's code while it is running: a long loop in unoptimized code switches to an optimized version. On by default since .NET 7 on x64 and Arm64.

OTLP (OpenTelemetry Protocol)

The OpenTelemetry protocol for sending traces, metrics and logs over gRPC or HTTP. The OpenTelemetry Collector and most observability systems, including Elastic, accept it.

Out-of-process hosting

An IIS hosting model in which ANCM starts the app as a separate process with Kestrel and forwards requests to it over HTTP via loopback.

Outer join (LEFT, RIGHT, FULL JOIN)

A join that keeps rows of one or both tables even without a match and fills the other side's columns with NULL. LEFT preserves the left table, RIGHT the right one, FULL both.

Output caching

ASP.NET Core middleware (.NET 7+) that stores ready responses on the server by server-side policies and ignores client headers. It supports tags, locking on a miss and Redis.

OWASP Top 10

The OWASP community's ranking of the ten main risk categories for web applications. It is updated every few years; the current edition is from 2025.

PAC (Privilege Attribute Certificate)

A structure inside an Active Directory Kerberos ticket that lists the SIDs of the user and all of their groups. The server builds a Windows token from it without querying the directory.

PACELC

Daniel Abadi's extension of CAP (2010–2012): if there is a partition (P), the system trades availability (A) against consistency (C); else (E), latency (L) against consistency (C).

Package lock file (packages.lock.json)

A file with the project's full dependency graph and exact versions, transitive ones included. With dotnet restore --locked-mode, restore uses exactly these versions or fails if the graph changed.

Package Source Mapping

A nuget.config setting that defines, per package name pattern, which feed a package may come from. It protects against internal packages being replaced by same-named ones from nuget.org (dependency confusion).

package-lock.json

npm's lockfile with exact versions and integrity hashes of the whole dependency tree, transitive dependencies included. npm ci installs strictly from it and fails if it disagrees with package.json.

Page density

How full the index pages are — avg_page_space_used_in_percent. Half-empty pages need more reads and more buffer pool memory for the same data.

Page split

An insert into a full index page: SQL Server allocates a new page and moves part of the rows into it. The result is extra log, fragmentation and half-empty pages.

PAR (Pushed Authorization Requests)

An OAuth extension (RFC 9126): the client sends authorization parameters in a direct POST and gets a request_uri, and the browser goes to /authorize with only that. Parameters are neither visible nor tamperable in the browser.

Parallel Programming Library (PPL)

The System.Threading unit: TTask and ITask tasks, IFuture<T> tasks with a result and TParallel.For parallel loops, all running on a thread pool.

Parallel run

The old and new versions of a system run at the same time on the same data. Results are compared, and the old version stays as the rollback path until the new one proves equivalent.

Parameter sniffing

Optimizer behavior where a plan is compiled for the parameter values of the first call and reused for the rest. Helpful with uniform data, harmful with skewed data.

Parameterized test

One test method that runs against several sets of input data. In xUnit it is [Theory] with [InlineData] or [MemberData], in NUnit [TestCase], in MSTest [DataRow].

Parametric polymorphism

The same code works with any type passed as a parameter. In C# these are generics: List<T>, Max<T>(T a, T b).

Parent control (Parent)

The windowed control (TWinControl) inside which a control is displayed. It positions and paints its child controls and also frees them along with itself.

Partial index

An index over only the rows that satisfy the WHERE condition in its definition. Smaller than a full index and used by queries with a compatible condition; the equivalent of a SQL Server filtered index.

Partial Prerendering (PPR)

A Next.js rendering mode: the static and cached part of a page is prebuilt into a static shell, and dynamic parts behind Suspense stream in the same response.

Partial view

A .cshtml file with a repeated chunk of markup that other views include via <partial>. It has no logic of its own and gets its data from the parent.

Partition

A slice of a Kafka topic — a separate ordered log on one of the brokers. Record order is guaranteed only within a partition, and in a consumer group each partition is read by one consumer.

Partition elimination

An optimization where a query filtering on the partitioning column reads only the partitions it needs. Without such a filter the query touches every partition.

Partition switching

ALTER TABLE ... SWITCH: moving a partition into or out of another table by changing metadata, without copying rows. The basis of sliding-window archiving and fast loading.

Pass by object reference (call by sharing)

How Python passes arguments: a function parameter becomes another name for the same object. Changes to the object are visible to the caller; rebinding the parameter is not.

Password hashing

Storing a password as the output of a slow function (PBKDF2, bcrypt, scrypt, Argon2) with a salt. The slowness is deliberate: it makes brute-forcing a leaked database expensive.

Pattern matching

Testing a value against a pattern — a type, properties, a range, a list — while extracting data into variables. Works in is, switch statements and switch expressions.

PDP and PEP (policy decision and enforcement points)

A policy decision point computes the permit or deny decision; a policy enforcement point intercepts the request and enforces that decision. The split is described in NIST SP 800-162; OPA and OpenFGA are examples of external PDPs.

Percentile (p50, p95, p99)

The value below which a given share of measurements falls: p99 = 200 ms means 99% of requests are faster than 200 ms. In metrics, percentiles are approximated from histogram buckets.

PerfView

A free Microsoft profiler on top of ETW: it collects CPU, allocation, GC and exception traces and analyses them offline. The learning curve is steep, but it shows what counters and logs do not.

Persistent fields

TField objects created in the Fields Editor and stored in the .dfm. They give typed access and let you add calculated and lookup fields, but must match the query columns by name and type.

Pessimistic concurrency

Concurrency control through locks: data is locked before it is changed, and competitors wait. Pays off with frequent conflicts on short transactions.

pg_stat_statements

A PostgreSQL extension that accumulates execution statistics per normalized query: calls, total and mean time, rows, block reads. The closest equivalent of Query Store, but it does not store plans.

PgBouncer

A lightweight external connection pooler for PostgreSQL. In transaction mode it gives a client a server connection only for the duration of a transaction, so thousands of client connections are served by a small number of server processes.

Phantom dependency

A package your code imports even though it is not in your own package.json: it is reachable only because npm hoisted someone else's transitive dependency into a flat node_modules. It breaks when the package that pulled it in is updated.

Phantom read

An anomaly in which re-running a query with the same condition returns new or missing rows: another transaction inserted or deleted matching records.

pickle

The built-in format for serializing Python objects to bytes. multiprocessing uses it to pass data between processes, which is why lambdas and local functions cannot be sent.

Pinning

Preventing the GC from moving an object so its address can be passed to native code: fixed, a GCHandle of type Pinned, or allocation on the POH. Pinned objects get in the way of compaction and fragment the heap.

Pipe in NestJS

A class with a transform method that validates or transforms a handler argument before the call. Built-in ones include ValidationPipe and ParseIntPipe; a failing pipe produces a 400.

Pivot transaction

The saga step after which no compensations run: the remaining steps are only retried until they succeed, so they must be idempotent.

PKCE (Proof Key for Code Exchange)

An OAuth extension (RFC 7636): the client sends a hash of a random string in the authorization request and the string itself when redeeming the code. An intercepted code is useless without it.

Plan cache

The memory area where SQL Server keeps compiled plans for reuse. A plan is matched by the query text with its parameter declarations and by the session SET options.

Plan forcing

Pinning a specific Query Store plan to a query with sp_query_store_force_plan. The server compiles the query with that plan until forcing is removed or the plan becomes impossible.

Platform adapter

The layer through which NestJS works with an HTTP library: @nestjs/platform-express (the default) or @nestjs/platform-fastify. Decorator-based NestJS code doesn't depend on the choice.

Pod

The smallest unit of deployment in Kubernetes: one or more containers sharing an IP and volumes. Pods are ephemeral — controllers such as a Deployment create and delete them.

POH (pinned object heap)

The heap for objects that must not move (.NET 5+). An array is allocated there with GC.AllocateArray and pinned: true; it is collected with generation 2 and never compacted.

Point-to-point

A messaging model where each message in a queue goes to exactly one of the competing consumers. It's how work is spread across instances of a service.

Polymorphism

The ability of one piece of code to work with objects of different types. In OOP it usually means subtype polymorphism: a virtual call picks the implementation by the object's actual type.

Ports and adapters (hexagonal architecture)

Alistair Cockburn's style: the application talks to the outside world only through ports — interfaces it declares itself. An adapter implements a port for a specific technology: a controller, an EF Core repository, an SMTP client.

Prefix sums

An array where element i is the sum of the first i elements of the original. After O(n) setup, the sum of any range takes O(1) as the difference of two prefixes.

Preflight request

An OPTIONS request the browser sends before a "non-simple" cross-origin request: one with a method such as PUT, an application/json body or custom headers. Without the server's permission the actual request is not sent.

preStop hook

An action the kubelet runs before sending SIGTERM to a container: a command, an HTTP request or a sleep pause. The hook's time counts against terminationGracePeriodSeconds.

Primary constructor

Constructor parameters declared right in the type declaration: class Service(ILogger log). Available for class and struct since C# 12; the parameters are in scope in the whole type body but do not become properties.

Primitive

A JavaScript value that is not an object and has no methods: string, number, bigint, boolean, undefined, null, symbol. Primitives are immutable and compared by value.

Primitive obsession

A code smell: domain concepts such as email, money and identifiers are stored as string, decimal and int. Validation gets scattered across the code; the cure is the Replace Primitive with Object refactoring.

Principle of least privilege

A user or process gets only the permissions its task needs, and only for as long as it needs them. In NIST SP 800-53 this is control AC-6.

Prisma Client

A typed database client that prisma generate builds from the schema: findMany, create, update and other methods for each model. It doesn't track changes — every call runs a query right away.

Prisma driver adapter

A package through which Prisma Client runs queries with a regular database driver, for example @prisma/adapter-pg on top of pg. Since Prisma 7 an adapter is required, and the connection pool is configured in the driver.

Prisma interactive transaction

A prisma.$transaction(async (tx) => ...) call: every query through tx runs in one transaction, and you can run your own logic between them. An exception rolls it back; the default timeout is 5 seconds.

Prisma Migrate

Prisma's migration tool: prisma migrate dev creates SQL migrations from schema changes, and prisma migrate deploy applies ready-made migrations in CI and production. History is kept in the _prisma_migrations table.

Prisma schema (schema.prisma)

A file in the Prisma schema language with the data source, generators and models. Prisma Migrate builds SQL migrations from it, and the generator builds a typed client.

Privilege creep

The gradual growth of an employee's permissions: transfers and new projects add access, but the old access is never removed. The cure is access reviews and revoking permissions on a role change.

ProblemDetails

A standard JSON error format for HTTP APIs defined by RFC 9457 (formerly RFC 7807), with type, title, status, detail and instance fields. ASP.NET Core enables it with AddProblemDetails().

Process pool (ProcessPoolExecutor)

An executor from concurrent.futures that runs functions in separate processes. Each process has its own interpreter and its own GIL, and arguments and results travel through pickle.

Producer-consumer

A pattern where some threads put work into a shared queue and others take it out and process it. The queue decouples the pace of production from the pace of processing.

Projection

Selecting only the needed fields from a source, such as Select into a DTO in a LINQ query. EF Core then reads only those columns and does not track entities.

Prometheus

A monitoring system and time series database. It scrapes metrics from services' HTTP endpoints (pull), stores them and evaluates alerting rules; charts are usually built in Grafana.

Promise

An object holding the result of an asynchronous operation, which will be fulfilled with a value or rejected with an error. The then, catch and finally callbacks run as microtasks.

Prop drilling

Passing props through several layers of components that don't need them just to reach a deep descendant. Context or composition via children fixes it.

Property injection

A form of DI where the container assigns dependencies to public properties of an already created object. The built-in .NET container does not support it; Autofac does.

Props

The inputs a parent passes to a React component. The component only reads them; to change something above, it calls a callback from props.

Protocol (typing.Protocol)

An interface description for structural typing (PEP 544, Python 3.8): a class is compatible with a protocol if it has the required methods, with no explicit inheritance. Checked by mypy and pyright.

Protocol Buffers (Protobuf)

Google's binary serialization format: the schema is described in .proto, and every field is encoded by its number and type. Messages are more compact than JSON but unreadable without the schema.

Provisioning

Automatically creating accounts and granting permissions in target systems — AD, SaaS, internal apps — and the reverse process, deprovisioning. The standard protocol for it is SCIM (RFC 7643, RFC 7644).

Proxy

A structural pattern: an object with the same interface as the real one controls access to it — creates it lazily, calls it remotely, checks permissions or caches results.

PSP optimization (Parameter Sensitive Plan)

A SQL Server 2022 feature at compatibility level 160: for a query over skewed data the server keeps several plan variants and picks one by the cardinality range of the current parameter value. Works with equality predicates.

Pub/sub (publish-subscribe)

A messaging scheme: a sender publishes a message to a topic or channel without knowing the receivers, and every subscriber gets it. Whether messages are stored depends on the system: Redis pub/sub delivers only to current subscribers, while Kafka and Service Bus subscriptions keep them until they are read.

Public client

A client that cannot keep a secret: an SPA, a mobile or desktop app. Its code is available to the user, so PKCE is mandatory for it.

Pull request (PR, merge request)

A request to merge one branch into another on a platform such as GitHub, GitLab or Azure DevOps. Review, discussion and CI checks happen around it; GitLab calls it a merge request.

Pure function

A function whose result depends only on its arguments and which has no side effects: it does not change fields or write to files or a database. It is easy to test and safe to call in parallel.

Pydantic

A library for data validation and serialization driven by type hints. Models inherit from BaseModel; in version 2 the pydantic-core engine is written in Rust.

pydantic-settings

A package with the BaseSettings class: settings fields are filled from environment variables, .env and secret files, and Pydantic validates the types when the object is created.

pyproject.toml

The standard Python project file: metadata and dependencies in the [project] table (PEP 621), the build system and tool settings in [tool.*] tables. The counterpart of .csproj.

pytest fixture

A function decorated with @pytest.fixture that prepares data or a resource for a test. The test receives its result as a parameter with the same name, and the code after yield runs as teardown.

Quality gate

A set of thresholds an analysis result must pass to be considered acceptable, for example no new issues and at least 80% coverage on new code. In SonarQube a failed gate can stop the pipeline and block the PR merge.

Quartz.NET

A job scheduler for .NET: a job (IJob) runs on triggers — an interval, cron or a calendar. With AdoJobStore it keeps the schedule in a database and runs as a cluster.

Query materialization

Running a lazy query and storing the result in a collection: ToList(), ToArray(), ToDictionary(). After that, further reads do not run the query again.

Query optimizer

The DBMS component that uses the query text, statistics and indexes to pick the execution plan with the lowest estimated cost. The query says what to get; the optimizer decides how.

Query provider

An IQueryProvider implementation that builds and executes IQueryable<T> queries by translating the expression tree into the data source's language. The EF Core provider, which generates SQL, is one example.

Query Store

A per-database store of query history, plans and runtime statistics. Introduced in SQL Server 2016 and on by default for new databases since SQL Server 2022; it helps find regressions and pin a plan.

Query Store hints

Query hints such as RECOMPILE or MAXDOP attached to a query in Query Store through sys.sp_query_store_set_hints, without changing its text. Available since SQL Server 2022.

Queue-based load leveling

A pattern where requests go into a queue and workers drain it at a steady rate. A peak turns into queue growth and latency instead of an overloaded service.

Quicksort

A sort that picks a pivot, partitions the rest into smaller and larger elements and recursively sorts the parts. O(n log n) on average and in place, O(n²) in the worst case; unstable.

Quorum

The minimum number of replicas that must acknowledge a write (W) or answer a read (R). When W + R exceeds the number of replicas N, a read overlaps with at least one up-to-date replica.

Race condition

A bug where the program's result depends on the order in which threads access shared data. The classic example is a lost increment when two threads run count++.

Ranking functions

ROW_NUMBER, RANK, DENSE_RANK and NTILE — window functions that number rows within a partition. They differ in how they treat ties.

Rate limiting

Protection that rejects requests above a limit, usually with status 429. Since .NET 7 ASP.NET Core has middleware with fixed window, sliding window, token bucket and concurrency algorithms.

Razor

A template syntax that embeds C# in HTML with the @ symbol. .cshtml files are compiled into C# classes at build time, and values written out are encoded automatically.

Razor Pages

A server-rendered UI model where a .cshtml page with the @page directive answers a route itself, and OnGet and OnPost handlers live next to it in a PageModel class. Built on the MVC infrastructure.

RBAC (role-based access control)

A model where permissions are grouped into roles and users are assigned roles. The NIST model is standardized as ANSI INCITS 359 and, beyond the core level, covers role hierarchies and separation of duties.

RBAR (row by agonizing row)

A tongue-in-cheek name for row-by-row processing: cursors, WHILE loops and per-row calls from an application. The term was coined by Jeff Moden.

RBCD (resource-based constrained delegation)

Constrained delegation configured by the owner of the target service: its account lists the accounts allowed to delegate to it. Introduced in Windows Server 2012; works across domains.

RCSI (read committed snapshot isolation)

SQL Server's row-versioning implementation of READ COMMITTED: each statement reads data committed before it started, without shared locks. Enabled by the READ_COMMITTED_SNAPSHOT database option and on by default in Azure SQL Database.

React Compiler

A build-time tool that analyzes components and automatically memoizes values, JSX and callbacks. The stable 1.0 release shipped in October 2025.

React hooks

Functions whose names start with use (useState, useEffect, useContext) that give a component state and other React features. They are called only at the top level of a component or custom hook.

React Server Components (RSC)

Components that run only on the server or at build time. They can be async and read data directly, and their code never reaches the browser, but they have no state or event handlers.

Read model

Data shaped for specific queries: flat tables, documents, a cache. In CQRS it is updated from events or changes in the write model, so it may lag behind.

Read-your-writes

A session guarantee: a user always sees their own writes, even while other clients may still read an older version from a lagging replica.

Readable secondary replica

A secondary replica of an Always On availability group that accepts read-only connections. Its data lags the primary by the time it takes to ship and apply the log, and queries run under snapshot isolation.

ReaderWriterLockSlim

A lock that admits many readers at once or a single writer. It is thread-affine and does not support recursion by default.

Readiness probe

A periodic Kubernetes check of whether a container is ready to accept traffic. On failure the pod is removed from the Service's EndpointSlices but not restarted.

ReadyToRun (R2R)

A form of AOT compilation that adds precompiled machine code to an assembly alongside its IL. It speeds up startup; the JIT stays and recompiles hot methods.

ReBAC (relationship-based access control)

A model where permissions are derived from a graph of relationships between users and objects — "owner", "group member", "folder contains document". Google Zanzibar, OpenFGA and SpiceDB work this way.

Rebalance

Reassignment of partitions among consumer group members when a member joins, leaves or stops responding. Records processed but not committed before the rebalance are delivered again.

Rebase

Moving a branch's commits onto a new base: Git reapplies each commit on top of another branch and creates a copy with a new hash. It makes history linear but rewrites it.

Receiver

The value an extension member is called "on": the this parameter of a classic extension method or the parameter of an extension(...) block in C# 14.

Reconciliation

A periodic comparison of data in two systems: counts, totals and document numbers for a period. It finds what was lost or duplicated despite receipts and retries.

Reconciliation (React)

The algorithm React uses to compare a new element tree with the previous one and decide which DOM nodes to update, create or remove. List items are matched by key.

Record

The record modifier for a class (C# 9) or a struct (C# 10): the compiler generates value equality, ToString, Deconstruct for positional parameters and support for with.

Recursion

A technique where a function calls itself on a smaller subproblem. It needs a base case without recursion and a step that moves towards it; every call takes a stack frame.

Recursive CTE

A CTE that references itself: the anchor part produces the initial rows, and the recursive part after UNION ALL repeats while it returns rows. Used to walk hierarchies; in SQL Server the depth is limited by MAXRECURSION, 100 by default.

RED method

A metric set for a request-serving service: Rate (requests per second), Errors and Duration (response time). Proposed by Tom Wilkie as a complement to USE.

Red-black tree

A self-balancing binary search tree: insert, delete and lookup take O(log n). SortedSet<T> and SortedDictionary<TKey, TValue> are built on it.

Redis

An in-memory key-value store with optional persistence. Typical roles are a distributed cache, counters, queues and locks; in ASP.NET Core it plugs in as IDistributedCache or directly via StackExchange.Redis.

Reentrancy

A handler being called again while its previous call has not finished yet. In the VCL it happens with Application.ProcessMessages inside an event handler.

Reentrant lock

A lock that the owning thread can enter again without waiting for itself; it has to exit the same number of times. Monitor and Lock are reentrant, SemaphoreSlim is not.

Ref and HEAD

A ref is a name that points to a commit: a branch, a tag or a remote-tracking branch. HEAD is a special ref to the current branch or, in a detached HEAD state, directly to a commit.

Ref safety

C# compiler rules that keep a reference (ref, Span<T>, any ref struct) from outliving the data it points to. For example, you cannot return a span over a stackalloc buffer; the scoped modifier narrows the allowed lifetime.

ref struct

A struct that can live only on the stack: it cannot be boxed, stored in a class field or captured by a lambda. Example: Span<T>.

Reference counting

CPython's main memory management mechanism: every object has a reference count, and the object is freed as soon as the count drops to zero. Reference cycles are not freed this way.

Reference counting in Delphi

A lifetime model where a value carries a count of references: the compiler increments it on assignment and decrements it when a reference goes away, and the memory is freed at zero. Strings, dynamic arrays, interfaces and anonymous methods live this way in Delphi.

Reference equality

Two references point to the same object. Checked with object.ReferenceEquals; == and Equals on classes behave this way by default.

Reference token

An opaque identifier token: the data stays with the authorization server, and the API gets it through introspection. It is revocable instantly and reveals nothing, but needs a network call.

Reference type

A type whose variable contains a reference to an object on the managed heap; assignment copies the reference. In C# these are class, interface, string, arrays and delegates.

Reflog (reference log)

A local log where Git records every move of HEAD and branches. It is how you find commits after reset --hard or a deleted branch; entries live 90 days by default, unreachable ones 30.

Reflow

Recomputing element sizes and positions (layout) after a change to geometry or the DOM. More expensive than a repaint, which only redraws pixels.

Refresh token

A long-lived token the client exchanges at the authorization server for a new access token without the user signing in again. It is never sent to APIs.

Refresh token rotation

The authorization server issues a new refresh token on every refresh and invalidates the old one. Presenting the old one again signals theft, and the server revokes the whole chain.

Registered claims (iss, sub, aud, exp)

The standard JWT payload fields: iss is the issuer, sub the subject, aud the intended audience, exp and nbf the lifetime bounds, iat the issue time, jti the token id. Validate the signature together with iss, aud and exp, or a token meant for someone else passes.

Regression testing

Re-checking functionality that already worked after a change. In a migration it confirms that the new version behaves the same as the old one.

reintroduce

A method directive that explicitly hides an ancestor's virtual method of the same name and suppresses warning W1010. The counterpart of the new modifier in C#.

Relying party trust

An ADFS entry for an application that ADFS issues tokens to: identifier, return URL, protocol, claim rules and access policy.

Remote (remote repository)

A named reference to another copy of the repository, usually on a server: origin is created by git clone. Commits are exchanged with it via fetch, pull and push.

Remote-tracking branch

A local ref such as origin/main that remembers where a server branch was at the last fetch. You do not commit to it directly: fetch and pull update it.

Render-blocking resource

A resource the browser must have before it starts rendering: stylesheets in the head and synchronous scripts. Scripts with defer, async and modules do not block.

Request pipeline

The chain of middleware every HTTP request passes through: in registration order on the way in and in reverse on the way out. It is built once when the app starts.

Request timeout

ASP.NET Core middleware (.NET 8+) that cancels the HttpContext.RequestAborted token after a set time. If the app does not handle the cancellation, the client gets a 504.

RequestDelegate

The Task RequestDelegate(HttpContext context) delegate — the signature of a pipeline step and of an endpoint. The whole built pipeline is a single RequestDelegate too.

Requests and limits

Container resources in Kubernetes. Requests are a reservation the scheduler uses to pick a node; limits are a ceiling: exceeding memory gets the process killed (OOMKilled), exceeding CPU gets it throttled.

Required member

A property or field with the required modifier (C# 11): it must be set in the object initializer, or the code does not compile. It helps with NRT when objects are created without a parameterized constructor.

Resource-based authorization

An access check on a specific object, such as a document or a request, after it is loaded. In ASP.NET Core it is done in code by calling IAuthorizationService.AuthorizeAsync(user, resource, policy).

Respawn

Jimmy Bogard's library that quickly cleans a test database between tests: it deletes table data in foreign-key order and leaves the schema alone.

Response caching

Caching HTTP responses by standard headers: browsers, proxies and CDNs store a response according to Cache-Control. ASP.NET Core has the [ResponseCache] attribute and a middleware of the same name.

REST

An architectural API style where a URL names a resource and a standard HTTP method expresses the action on it. The status code reports the outcome, and the server keeps no client state between requests.

Retention

The policy by which a broker removes old log data: by time (retention.ms, 7 days by default), by size, or by per-key compaction. Reading never deletes data.

Retry storm

An avalanche of requests when retries at several layers multiply or all clients retry at once. It finishes off an already overloaded service.

Reverse proxy

A server in front of the app that accepts requests from the network and forwards them to the app. It usually terminates TLS, balances load and lets several apps share ports 80 and 443.

Role explosion

Uncontrolled growth in the number of roles when every combination of job title, department, region or project gets its own role. A sign that the parameter belongs in an attribute (ABAC) or a relationship (ReBAC).

Role interface

An interface that describes one role an object plays for a specific client, rather than all its public methods. The opposite is a header interface, which mirrors the whole class.

Roll-forward

The rule for choosing a runtime version when an app starts. By default it takes the latest installed patch of its own version but not a new major version; the RollForward setting changes this.

Rolling deployment

A strategy where instances behind a load balancer are updated one at a time or in small batches. No extra servers are needed, but the old and new versions run side by side during the rollout.

Root service provider

The IServiceProvider created by builder.Build(). It lives for the whole lifetime of the app, stores singleton services and disposes of them at shutdown.

Roslyn

The open-source C# and Visual Basic compiler with APIs for code analysis. It turns source code into IL and metadata; analyzers and source generators run on it.

Roslyn analyzer

A C# compiler extension that checks code during the build and in the IDE and reports diagnostics such as CA2016 or IDE0161. Code quality analyzers have been part of the .NET SDK since .NET 5.

Route constraint

A condition on a route parameter: {id:int}, {name:alpha}, {slug:regex(...)}. If the value doesn't fit, the route doesn't match. It exists to tell routes apart, not to validate input.

Route group

A set of Minimal API endpoints sharing a prefix, created with MapGroup (.NET 7+). Filters, authorization and metadata applied to the group apply to all its endpoints.

Route template

A string like /orders/{id:int} describing which URLs match an endpoint. It contains literals, parameters in curly braces, constraints, default values and catch-alls.

Route template precedence

The rule for choosing among several matching routes: the more specific template wins. A literal beats a parameter, a constrained parameter beats an unconstrained one, and a catch-all is weakest.

Row versioning

A mechanism in which changing a row keeps its previous committed version. Readers take the suitable version instead of waiting for locks; RCSI and SNAPSHOT are built on it.

Row-level security (RLS)

A database feature that filters table rows by a policy for the current user or session context: CREATE POLICY in PostgreSQL, CREATE SECURITY POLICY in SQL Server.

rowversion

A SQL Server data type: 8 bytes from a database-wide counter that change automatically on every row modification. Used for the optimistic "nobody changed the row" check. The timestamp synonym is deprecated.

RPS (requests per second)

The number of requests per second — the main measure of load on a service. Both the average and the peak matter; the peak is usually several times the average.

Ruff

A Python linter and formatter from Astral, written in Rust. ruff check replaces flake8, isort and pyupgrade, and ruff format replaces Black.

Rule of three

A refactoring heuristic: tolerate two similar fragments, extract the common part on the third. Attributed to Don Roberts and popularized by Martin Fowler in "Refactoring".

RUM (real user monitoring)

Collecting performance metrics in real users' browsers and sending them to analytics. Gives field data, as opposed to Lighthouse lab measurements.

Runbook

Instructions for the on-call engineer for a specific alert: what to check, which actions are safe, whom to escalate to. Its link goes right into the alert.

Safe HTTP method

A method that by its semantics does not change server state: GET, HEAD, OPTIONS, TRACE. Such requests can be cached and retried without side effects.

Safe point

A place in the code where the runtime knows exactly where references live and can suspend the thread for a collection. A blocking collection waits for threads to reach one; a thread in native code is not suspended but cannot return to managed code until the collection ends.

SafeHandle

An abstract wrapper over an OS handle with a critical finalizer. It guarantees the handle is released exactly once and can't be closed during a P/Invoke call.

Saga

A way to run a business operation across several services as a chain of local transactions. If a step fails, completed steps are undone with compensating actions.

Salt

A random value, unique to each password and stored next to the hash. Identical passwords produce different hashes, and precomputed tables become useless.

Same-origin policy

The browser rule that a script may only read responses from its own origin: the same scheme, host and port. It can send requests to other origins but cannot read the responses.

SAML 2.0

An XML standard for exchanging authentication assertions between an identity provider and an application. Common in enterprise products and SaaS; ASP.NET Core has no built-in handler for it.

SARGable predicate

A predicate the optimizer can turn into an index seek range (from "search argument"). The column appears in it without functions, calculations or type conversions.

SaveChanges batching

Sending several INSERT, UPDATE and DELETE commands in one network round trip. On SQL Server EF Core puts up to 42 commands in a batch by default; MaxBatchSize sets the limit.

Scalar user-defined function (scalar UDF)

A T-SQL function that returns a single value. Before SQL Server 2019 it runs once per row and prevents a parallel plan; since 2019, at compatibility level 150, eligible functions are inlined into the query.

Sch-M lock (schema modification)

The lock DDL takes while changing an object. It is incompatible with every other lock, so while it is waiting or held, all queries on the table stall.

Scope

A string in the token request that limits what the client may do on behalf of the user: openid, orders.read, offline_access. It describes the client's permissions, not the user's.

Scope (DI scope)

An area inside which scoped services exist as a single instance and at the end of which the container disposes of the objects created in it. ASP.NET Core creates a scope for every HTTP request.

Scope validation (ValidateScopes)

A ServiceProviderOptions setting that makes the container forbid resolving scoped services from the root provider and injecting them into singletons. On by default in the Development environment.

Screen reader

Software that reads the interface aloud or outputs it to a braille display: NVDA, JAWS, VoiceOver, TalkBack. It reads the accessibility tree, not pixels.

Scrutor

An extension library for the built-in .NET container: assembly scanning with convention-based registration (Scan) and decorators (Decorate).

SDK container publishing (PublishContainer)

Building an image with dotnet publish /t:PublishContainer, without a Dockerfile or a Docker daemon. The SDK picks the base image, user and port; settings are Container* properties in the project.

Seam

Michael Feathers's term: a place where you can change a program's behavior without editing the code in that place — a virtual method, an interface parameter, configuration. Seams are how legacy code gets covered by tests.

search_path

A PostgreSQL setting with the list of schemas searched for objects referenced without a schema. By default it is the schema named after the user plus public; the closest SQL Server equivalent is a user's default schema, usually dbo.

Secret store

An external service for passwords, keys and certificates with access control, auditing and rotation: Azure Key Vault, AWS Secrets Manager, HashiCorp Vault. The app reads secrets at startup through a configuration provider.

Self-contained deployment

A publish mode that ships the .NET runtime together with the app. It needs no installed .NET but is built for a specific OS and architecture.

Semantic HTML

Markup with elements chosen by meaning: button, nav, main, label, headings — instead of div and span. It gives role, keyboard behaviour and structure for screen readers with no extra code.

Semantic versioning (SemVer)

A MAJOR.MINOR.PATCH versioning scheme: major goes up for breaking changes, minor for new backward-compatible features, patch for fixes. A hyphen suffix marks a prerelease, a plus suffix carries build metadata.

SemaphoreSlim

A lightweight in-process semaphore that lets at most N participants in at once. It can wait asynchronously with WaitAsync and has no owner.

Semi join

A join that returns rows of the left table that have at least one match on the right, without multiplying them or adding columns. In SQL it is expressed with EXISTS or IN.

Sender-constrained token

A token that only the holder of a specific key can use: via an mTLS certificate (RFC 8705) or a DPoP signature (RFC 9449). Stolen without the key, the token is useless.

Separate chaining

A collision-resolution technique in which items of the same hash-table bucket are linked into a chain. In Dictionary the chain is a set of indices inside the entries array, not separate node objects.

Separation of duties (SoD)

A rule that no single person performs a critical operation end to end: whoever creates a payment does not approve it. In RBAC it forbids conflicting roles for one user (static) or within one session (dynamic).

Sequence

A database object that hands out increasing numbers via nextval. It works outside transactions: a rollback does not return issued values, so keys can have gaps. Identity columns and serial are built on sequences.

Serilog enricher

A component that adds properties to every event: machine name, thread ID, data from LogContext. Added with Enrich.With... or Enrich.FromLogContext().

Serilog sink

A destination Serilog writes events to: the console, a file, Seq, Elasticsearch, OTLP. Each sink is a separate NuGet package.

Server Action

An async function marked with 'use server' that the client calls with a POST request to change data, for example via <form action>. It is a public endpoint, so authorization is checked inside it.

Server GC

A GC mode with a separate heap and a dedicated GC thread per logical processor. It gives more throughput at the cost of memory and is the default in ASP.NET Core.

Server state

A copy of data owned by the server. It goes stale without the client knowing, so it is cached, refetched and invalidated rather than kept as ordinary state.

Server-Sent Events (SSE)

A browser standard for a stream of text events from server to client over plain HTTP (EventSource). In the other direction SignalR sends data as separate POSTs.

Server-side rendering (SSR)

Producing a page's HTML on the server for every request. The user sees content right away, and JS then makes the page interactive.

Service lifetime

The rule the container uses to decide when to create a new instance of a service and when to dispose of it. .NET has three options: Transient, Scoped and Singleton.

Service Locator

A pattern where a class asks a global registry for its dependencies, for example through IServiceProvider.GetService. With DI it is considered an anti-pattern: dependencies are not visible in the constructor and errors move to run time.

Service mesh

An infrastructure layer for service-to-service calls: a proxy next to each service (sidecar) adds mTLS, retries, load balancing and telemetry without code changes. Examples are Istio and Linkerd.

Service ticket

A Kerberos ticket for a specific service, issued by the KDC in exchange for a TGT. It's encrypted with the key of the account that owns the service's SPN, so the service validates it on its own, without the KDC.

Session (SQLAlchemy)

The SQLAlchemy ORM object for working with objects within one unit of work: it loads them, tracks changes and saves them through flush and commit(). The counterpart of DbContext; not thread-safe.

SET XACT_ABORT

A session setting: with ON, any run-time error rolls back the whole transaction. The default is OFF, where some errors roll back only one statement and a client timeout leaves the transaction open.

Set-based approach

A style where a set of rows is processed by one statement (UPDATE ... JOIN, INSERT ... SELECT, MERGE) rather than by a loop over rows. The optimizer picks a plan for the whole set, and the overhead is paid once.

Shallow copy

A new container holding the same nested objects: copy.copy, list(a), a[:]. A deep copy (copy.deepcopy) recursively copies the nested objects as well.

Sharding

Horizontal splitting of data across several databases on different servers by a shard key, for example by store. It scales writes but complicates cross-shard queries and transactions.

Shared database

An integration style where several systems read and write the same tables. The data is always fresh, but the schema becomes a shared contract that cannot change without every participant.

Short-circuiting the pipeline

When middleware responds itself without calling next, so the rest of the pipeline doesn't run. Serving static files works this way, for example.

Shotgun surgery

A code smell: one logical change requires many small edits across many classes. The cure is to gather related logic into one module, for example with the Move Function and Combine Functions into Class refactorings.

ShutdownTimeout

How long the Generic Host waits for services and the server to stop (HostOptions.ShutdownTimeout). The default is 30 seconds since .NET 6; it used to be 5.

SID (Security Identifier)

A permanent identifier of a Windows account or group, such as S-1-5-21-...-1105. It doesn't change when the account is renamed, so checking rights by SID is more reliable than by name.

Signal

A wrapper around a value that notifies consumers when it changes: signal() for a writable value, computed() for a derived one, effect() for side effects. Stable since Angular 17.

Signal inputs and outputs (input, output, model)

The input(), output() and model() functions that replace the @Input() and @Output() decorators. An input is a read-only signal, model() is a two-way binding. Stable since Angular 19.

SignalR

An ASP.NET Core library for real-time messaging. It keeps a persistent connection and lets the server and the client call each other's methods.

SignalR backplane

A channel through which SignalR servers relay messages for clients connected to other servers. The standard implementation is Redis pub/sub.

SignalR group

A named set of connections that can be sent a message with a single Clients.Group(name) call. It lives in memory and isn't restored after a reconnect.

SignalR hub

A class deriving from Hub through which clients call server methods and the server calls client methods. An instance is created for every method call.

Signing key rotation

Scheduled replacement of the key an issuer signs tokens with. The new key is published in the JWKS ahead of time and the old one is kept until its tokens expire, otherwise validators with a cache reject tokens.

SIGTERM

The Unix signal asking a process to terminate. docker stop, Kubernetes and systemd send it; if the process does not exit in the allotted time, SIGKILL follows.

Silent renew

Getting a new token without user interaction: an /authorize request with prompt=none in a hidden iframe uses the provider's session. It breaks when the browser blocks third-party cookies.

Single point of failure

A component whose failure stops the whole system: a single gateway, database or load balancer instance. It is removed by redundancy across failure zones.

Single Responsibility Principle (SRP)

The S in SOLID: a module has one reason to change. In Martin's "Clean Architecture" wording, a module is responsible to one actor — one group of people who request changes.

Singleton

A creational pattern: a class has exactly one instance and a global access point to it. In .NET "one instance" is usually expressed with an AddSingleton registration in DI rather than a static property.

SLI (service level indicator)

A measurable indicator of service quality, usually the share of good events among all events: successful requests, requests faster than a threshold.

Sliding expiration

The entry is removed if nobody accessed it for a set interval; every read extends its lifetime. Without absolute expiration a frequently read entry never goes stale.

Sliding window

A technique for subarray problems: the window [left, right] grows to the right and shrinks from the left when the condition breaks. Each index moves at most once, so it is O(n).

SLO (service level objective)

A target value for a service quality indicator, such as "99.9% of requests succeed" or "p99 under 300 ms". An SLA is a contractual commitment to customers, usually looser than the internal SLO.

SMPP (Short Message Peer-to-Peer)

A protocol over TCP for exchanging SMS between an application (ESME) and an operator's or aggregator's SMS centre. Messages are sent with submit_sm, statuses come back via deliver_sm.

Snapshot (event sourcing)

A saved state of an aggregate at a given stream version. The aggregate is loaded from the snapshot plus only the later events instead of the whole stream.

SNAPSHOT isolation

A row-versioning isolation level in SQL Server: the whole transaction sees data as of its first data access. Trying to modify a row that was changed after that point fails the transaction with error 3960.

SOAP

A protocol for exchanging XML messages (envelopes) with a WSDL contract. Used by WCF and enterprise systems; the WS-* standards add security, reliable delivery and transactions.

Software supply chain

Everything an application is built from: packages, their dependencies, container images, CI/CD. A vulnerable or tampered package gives the attacker code inside your process.

SOLID

Five object-oriented design principles collected by Robert Martin: single responsibility, open/closed, Liskov substitution, interface segregation and dependency inversion. Michael Feathers coined the acronym.

Source generator

A Roslyn compiler extension that adds generated code to the project during the build. It replaces runtime reflection: this is how [LoggerMessage], [OptionsValidator] and [GeneratedRegex] work.

SPA (single-page application)

An app where the browser loads the shell once and then swaps content and the address without a full reload. The cost is JavaScript weight, client-side routing and state, plus extra work on accessibility and indexing.

Space complexity

An estimate of how much extra memory an algorithm needs as the input n grows, not counting the input itself. A pass with a HashSet<T> is O(n) space; a double loop with no collections is O(1).

Span

One operation inside a trace: an incoming request, a SQL query or an HTTP call. A span has a name, a start, a duration, attributes and a link to its parent span. In .NET a span is an Activity.

Span<T>

A ref struct made of a reference to a contiguous block of memory and a length. It can point to an array, a string, a stackalloc buffer or unmanaged memory, and slicing does not copy data. It lives only on the stack.

Specificity

A selector's weight in the cascade — a triple of ids; classes, attributes and pseudo-classes; type selectors and pseudo-elements. With equal origin and layer, the more specific rule wins.

Speculative generality

A code smell from Fowler's catalog: abstractions, parameters and hooks "for the future" that nobody uses. The cure is to remove them.

Split query

An EF Core 5+ mode where collection Includes run as separate SQL queries instead of one query with JOINs. Enabled with AsSplitQuery(); it removes cartesian explosion at the cost of extra round trips and no shared consistency.

SPN (Service Principal Name)

A Kerberos service name such as HTTP/portal.contoso.com, bound to a single AD account. The KDC uses it to pick the key it encrypts the ticket with; a duplicate or an SPN on the wrong account breaks sign-in.

SQL injection

A vulnerability where user data is spliced into SQL text and changes the query itself. The defense is passing values as parameters instead of concatenating strings.

SQLAlchemy Core

SQLAlchemy's lower layer: tables, SQL expressions (select, insert), connections and transactions without objects or change tracking. The ORM is built on top of it.

Squash merge

A way to merge a pull request in which all the branch's commits are combined into a single commit on the target branch. main history stays short, but intermediate commits do not make it in.

SSRF (server-side request forgery)

The attacker makes the server send an HTTP request to an address of their choosing, such as the internal network or a cloud metadata service. In the OWASP Top 10:2025 it is part of the access control category.

Stable sort

A sort that preserves the original order of elements with equal keys. Enumerable.OrderBy is stable; Array.Sort and List<T>.Sort are not.

Stack frame

The part of the stack used by a single method call: the return address, saved registers, local variables and some of the arguments. It is popped when the method returns.

Stack trace

The list of calls from where an exception was thrown to where it was caught, stored in Exception.StackTrace. throw; preserves it, throw ex; restarts it.

Stack unwinding

The second phase of exception handling: the runtime pops stack frames from the throw site to the handler it found and runs finally blocks along the way.

Staging table

A table where a load first puts raw data from the source. From there the data is validated and moved into the target tables with a set-based statement, and on a rerun staging is simply truncated.

Stale closure

A function that captured props or state from an old render and keeps using them. Typical for effects and timers with an incomplete dependency array.

Standalone component

A component that lists its own dependencies in imports and isn't declared in an NgModule. Introduced in Angular 14, stable in v15, the default since v19.

Star schema

A warehouse model: a fact table with measures and keys (sales) in the center, surrounded by denormalized dimension tables (date, store, product). A query is one level of joins plus an aggregate.

Starlette

A lightweight ASGI framework: routing, middleware, requests and responses, WebSockets. FastAPI inherits its application class and adds dependencies, validation and OpenAPI.

Startup probe

A Kubernetes check that waits for a container to finish starting. Until it succeeds, liveness and readiness probes do not run; if it fails, the container is restarted.

State machine

The type the compiler generates from an async method. It stores the current step number and the local variables, and its MoveNext method resumes execution after the last await.

Stateful reconnect

A SignalR mode (.NET 8+) in which the server and client buffer unacknowledged messages and, after a brief drop, resume the same connection without losses.

Stateless service

A service that keeps no state between requests in its own memory: sessions, carts and files live in external storage. Any instance can handle any request.

Static abstract interface member

A static method, property or operator that an interface requires from the implementing type (C# 11). It is called through a type parameter, such as T.Zero; generic math is built on it.

Static lambda

A lambda with the static modifier (C# 9) that is not allowed to capture locals or this. It guarantees that no closure is created and the delegate can be cached.

Statistics

An object describing the distribution of column values: a histogram on the first column and density for column prefixes. The optimizer uses it to estimate how many rows a predicate returns.

Statistics histogram

Part of a statistics object: up to 200 steps over the values of the first column. For each step it records how many rows equal its upper boundary and how many fall inside the range.

Sticky sessions

A load balancer setting that sends all of a client's requests to the same server, usually based on a cookie or IP. Also called session affinity.

Stored procedure

A named set of T-SQL statements on the server, with parameters. It can modify data, control transactions and return several result sets; its plan is cached on first execution.

Strangler fig

A pattern for replacing a system gradually: new code grows next to the old one and takes over features one by one until the old system can be switched off. The name comes from Martin Fowler.

Strategy

A behavioral pattern: a family of interchangeable algorithms behind a common interface, with the one to use passed in from outside. In C# a strategy is often a delegate or an IComparer<T>.

Stream

A Node.js object for processing data in chunks as it arrives: Readable is a source, Writable a destination, Duplex both, Transform changes data on the way. Streams are connected with pipeline.

Streaming SSR

Server rendering where HTML is sent in chunks: first a shell with fallbacks, then finished fragments in the same response. Slow data does not hold up the whole page.

Strict equality (===)

Comparison without type conversion: values of different types are not equal, and objects are equal only if the reference is the same. The one oddity is that NaN === NaN is false.

StrictMode

React's development checks: components render twice, and effects go through an extra setup → cleanup → setup cycle. This surfaces impure renders and effects without cleanup.

String interning

Keeping a single instance per unique string value in a runtime pool (the intern pool). string.Intern adds a string to the pool; interned strings live until the process exits.

StringBuilder

A mutable buffer for building a string piece by piece. It appends characters without intermediate strings and creates the final string in ToString().

Strongly typed hub (Hub<T>)

A hub whose client methods are described by an interface. Instead of SendAsync("Name", ...) you call an interface method, and the compiler catches a misspelled name.

Structural pattern

A pattern that describes how to compose classes and objects into larger structures. GoF lists seven: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy.

Structural sharing

A technique of immutable data structures: a new version reuses the unchanged parts of the old one. ImmutableList<T>.Add creates O(log n) new tree nodes, and the remaining nodes are shared.

Structural typing

Type compatibility is determined by the set of members, not by name or declared inheritance. TypeScript works this way; C# and Java use nominal typing.

Structured logging

Writing logs as events with properties instead of finished strings. You can search, filter and aggregate by those properties in Elastic, Seq or another store.

STS (Standard Term Support)

A .NET release supported for 24 months (since .NET 9; it used to be 18). These are the odd versions: .NET 9, .NET 11.

Stub

A test double that returns predefined answers and so controls the inputs of the code under test. The test asserts nothing on a stub.

Surrogate key

An artificial row identifier with no business meaning: a number from IDENTITY or SEQUENCE, a GUID. It never changes, which makes it convenient for foreign keys.

Suspense

A React component that shows a fallback while its children wait for data or code. On the server its boundaries define the parts that stream separately.

Switch expression

The expression x switch { pattern => result, ... } (C# 8) that returns the value of the first matching arm. If no arm matches, it throws SwitchExpressionException.

Symptom-based alerting

Alerting on what users see: errors, latency, unavailability. The opposite of a cause-based alert on an internal indicator such as CPU utilization.

Sync block

An internal CLR structure that a Monitor's state moves to when the lock on an object becomes contended. You can see owners and waiters with the syncblk command in a dump.

Sync-over-async

Waiting synchronously for an async operation via .Result, .Wait() or GetAwaiter().GetResult(). It blocks a thread for the whole operation and is the most common cause of thread pool starvation.

Synchronization context (SynchronizationContext)

An abstraction that schedules code to run in the right environment, such as the UI thread. By default await resumes the method in the captured context.

Synchronizer token pattern

A CSRF defense where the server gives the client an unpredictable token tied to the user and accepts a state-changing request only if the token comes back with it.

System.Threading.Lock

A dedicated lock type introduced in .NET 9. When the expression in a lock statement has this type, C# 13 and later emit a call to EnterScope instead of Monitor.

Table partitioning

Storing one logical table in partitions by ranges of a column's values, for example by month. A partition function defines the boundaries, a partition scheme maps them to filegroups.

Table-valued parameter (TVP)

A parameter of a user-defined table type (CREATE TYPE ... AS TABLE) through which a client passes a set of rows in one call. It is declared READONLY in a procedure and has no column statistics.

Tabulation

Bottom-up DP: the table of answers is filled by a loop from the base cases to the target, with no recursion. It lets you keep only the last rows of the table and save memory.

Tag helper

A class that processes an HTML element in Razor markup on the server, such as <a asp-action="..."> or <input asp-for="...">. Enabled with the @addTagHelper directive.

Tail call

A call that is the last action of a function, so its stack frame can be reused. The C# compiler doesn't guarantee this optimization, so deep recursion in C# is rewritten as a loop.

Tail latency

The response time of the slowest requests, usually the p95, p99 and p99.9 percentiles. Under load these grow first, and the average hides it.

takeUntilDestroyed

An operator from @angular/core/rxjs-interop that completes a subscription when the component or service is destroyed. In an injection context it gets DestroyRef itself; outside one it takes it as a parameter. Stable since v19.

TanStack Query (React Query)

A library for server state: it fetches data, caches it by query key, refetches stale data and invalidates it after mutations.

Task

An object that describes asynchronous work and its future result. By default a task's delegate runs on the thread pool, and a task from async I/O may not occupy a thread at all.

Task queue (macrotask)

The queue from which the event loop takes one task at a time: setTimeout callbacks, user events, network messages. All microtasks run between tasks.

Task scheduler (TaskScheduler)

An object that decides where tasks run. The default scheduler is the thread pool, and await captures a non-default scheduler the same way it captures a synchronization context.

Task.WhenAll

A method that returns a task completing after all the given tasks complete. If some of them failed, it holds all their exceptions.

TaskGroup

An async context manager (Python 3.11+) that waits for every task started inside it. If one fails, the rest are cancelled and the errors are collected into an ExceptionGroup.

TBytes

A dynamic array of bytes (array of Byte) in Delphi. After the move to Unicode, binary data is kept in TBytes rather than in a string, because strings are now two-byte and get re-encoded.

TDataSet

The abstract base class of Delphi datasets: a cursor over rows, fields, states, events and navigation. ADO, FireDAC, dbExpress datasets and TClientDataSet inherit from it.

Tell, Don't Ask

A principle: do not pull data out of an object to make a decision for it; ask the object to perform the action. That keeps behavior next to the data.

Template Method

A behavioral pattern: a base class defines the skeleton of an algorithm in one method and leaves individual steps to subclasses through virtual or abstract methods.

Temporal coupling

A dependency where systems must be running at the same time for an interaction to succeed. A synchronous call couples in time; exchange through a queue or files does not.

Temporal dead zone (TDZ)

The region from the start of a block to a let, const or class declaration where the variable already exists, but accessing it throws ReferenceError.

TEncoding

A Delphi RTL class that converts text to bytes and back in a given encoding: UTF-8, UTF-16, ANSI or a specific code page. It can detect and write a BOM.

Terminal middleware

Middleware that produces the response itself and never calls the next component, such as app.Run. Nothing registered after it in the same branch runs.

Test double

The general name for an object that replaces a real dependency in a test. Gerard Meszaros's kinds are dummy, stub, spy, mock and fake.

Test pyramid

Mike Cohn's model: many fast unit tests, fewer integration tests and very few end-to-end tests. The higher the level, the slower, more expensive and more brittle the test.

Testcontainers

A library that starts Docker containers from test code — SQL Server, PostgreSQL, Redis, brokers — and removes them after the run. Tests work against real infrastructure of the same version as production.

TFM (target framework moniker)

The short name of a target platform in a project or NuGet package: net48, netstandard2.0, net10.0, net10.0-windows.

TGT (Ticket Granting Ticket)

The Kerberos "ticket for getting tickets": the KDC issues it after checking the password, and the client uses it to get service tickets without re-entering the password. Encrypted with the krbtgt account's key; lives 10 hours by default.

The 'use cache' directive

A Next.js directive (Cache Components) that caches the result of an async function, a component or all exports of a file. The cache key is the arguments and captured values, cacheLife sets the lifetime and cacheTag adds tags for invalidation.

The [ApiController] attribute

A controller attribute that turns on API-specific behavior: required attribute routing, an automatic 400 response on validation errors, binding source inference and ProblemDetails for error status codes.

The field keyword

A C# 14 contextual keyword that refers to a property's compiler-generated backing field right inside an accessor, without declaring your own field.

The never type

A type with no values: the result of a function that never returns and what is left after exhaustive narrowing. Assigning to never in a default branch checks that a switch handled every variant.

Third-party cookies

Cookies of another site loaded inside a page, for example in an iframe. Safari blocks them, Firefox partitions them by top-level site, and in Chrome the user can turn them off.

this in JavaScript

A keyword whose value is set by how a function is called: new, call/apply/bind, a call through an object, or a plain call. Arrow functions have no this of their own.

Thread affinity

The property of a primitive that must be released by the same thread that acquired it. Monitor, Lock, Mutex and ReaderWriterLockSlim have it, so they cannot be held across await.

Thread pool

A set of background threads that the CLR creates on demand and reuses for short work items. Task.Run, async method continuations and timer callbacks run here.

Thread pool starvation

A state where the pool has no free threads for new work because the existing ones are blocked. It shows up as growing latency with low CPU usage.

Three-valued logic

In SQL a condition is TRUE, FALSE or UNKNOWN. Any comparison with NULL yields UNKNOWN, and WHERE, ON and HAVING let through only TRUE — hence the NOT IN and <> traps.

THTTPClient

An HTTP client from the System.Net.HttpClient unit with no visual components. It uses the platform's native HTTP stack and fits calling REST services from a Delphi client.

Tiered compilation

A JIT mode in which a method is first compiled quickly without optimizations and, after 30 calls, recompiled with optimizations in the background. On by default since .NET Core 3.0.

TimeProvider

The .NET 8+ abstraction over system time: current time, time zone and timers. Tests replace it with FakeTimeProvider from the Microsoft.Extensions.TimeProvider.Testing package and advance time manually.

timestamptz (timestamp with time zone)

The PostgreSQL type for a point in time. On input the value is converted to UTC, on output to the session time zone; the original offset is not stored, unlike datetimeoffset in SQL Server.

TInterfacedObject

An RTL base class with a thread-safe IInterface implementation: it counts interface references and destroys the object when the count reaches zero. Descendants are held only through interface variables and never freed with Free.

TLS (Transport Layer Security)

A protocol over TCP that encrypts traffic, protects it from tampering and proves the server's identity with a certificate. HTTPS is HTTP over TLS; the current versions are 1.2 and 1.3.

TLS termination

Decrypting HTTPS at a proxy or load balancer, after which the request travels to the app over plain HTTP. Only the termination point needs a certificate.

TOAST

PostgreSQL's mechanism for storing large values: when a row is wider than ~2 KB, large fields are compressed and moved to a separate internal table. Changing such a value rewrites it entirely.

Token bucket

A rate-limiting algorithm: the bucket refills with tokens at a constant rate and each operation takes one. It allows short bursts up to the bucket size while holding the average rate.

Token exchange

An OAuth 2.0 grant from RFC 8693: a service hands the authorization server an incoming token and gets a new one for another audience. The user stays in sub, and the calling service goes into act.

Token introspection

An API asking the authorization server "is this token valid and what does it contain" (RFC 7662). It gives instant revocation at the cost of a network call per validation.

Token revocation

Declaring a token invalid before it expires. An API validates a self-contained JWT locally, so revocation needs a list of revoked jti values or introspection.

Topological sort

An ordering of the vertices of a directed acyclic graph such that every edge goes from an earlier vertex to a later one. Kahn's algorithm does it in O(V + E) and detects cycles along the way.

Trace ID

A W3C Trace Context identifier shared by all operations of one request across a distributed system. ASP.NET Core takes it from Activity.Current and adds it to ProblemDetails as traceId.

Transaction

A group of database operations that runs as a single unit: either committed entirely (COMMIT) or rolled back entirely (ROLLBACK).

Transaction ID wraparound

PostgreSQL transaction IDs are 32-bit and compared circularly, so after ~2 billion transactions old rows would appear to be "from the future". VACUUM freezes them in advance; if it falls behind, the database stops accepting write transactions.

Transaction log (write-ahead log, WAL)

A sequential log of changes that is written to disk before the data pages. On commit the database waits for the log write, and after a crash it uses the log to redo committed work and undo uncommitted work.

Transactional outbox

A pattern where an event is saved to an outbox table in the same local transaction as the business data, and a separate process (the relay) later publishes it to the broker. It gives at-least-once delivery without a distributed transaction.

TransactionScope

A System.Transactions class that creates an ambient transaction: connections opened inside the block enlist in it automatically. Defaults to SERIALIZABLE and a 1-minute timeout.

Transient fault

An error that goes away by itself shortly: a network blip, a service restart, a 503 or 429 response. Such errors are worth retrying after a pause.

Transition

An update marked as non-urgent with startTransition or useTransition. React can interrupt it for user input and keeps showing the previous UI meanwhile.

Transitive dependency

A package that got into the project not directly but as a dependency of another package. NuGet picks one version of it for the whole project.

Trimming

Removing unused code from an app and its libraries at publish time. It reduces size but can break code that finds types via reflection; trim analyzers flag the risky spots.

Trunk-based development

A model in which all developers merge small changes into one branch (the trunk, usually main) often and keep no other long-lived development branches. Unfinished work hides behind feature flags.

Truthy and falsy

How a value behaves in a boolean context (if, &&, ||). Falsy values are false, 0, -0, 0n, '', null, undefined and NaN; everything else, including [] and '0', is truthy.

TryAdd and TryAddEnumerable

Registration methods from Microsoft.Extensions.DependencyInjection.Extensions. TryAdd* adds a service only if it is not registered yet, TryAddEnumerable only if the same service-and-implementation pair is not there.

TThread

Delphi's class for a background thread: code goes in Execute, Terminate requests a stop, and Synchronize and Queue pass code to the main thread.

TTL jitter

A random addition to a cache entry's lifetime so that keys loaded together do not expire at the same moment and cause a wave of misses.

Two pointers

A technique where two indexes move through an array towards each other or in the same direction. It solves problems on sorted arrays in O(n) time and O(1) memory: a pair with a given sum, a palindrome, a merge.

Two-phase commit (2PC)

A distributed transaction protocol: the coordinator first asks all participants whether they're ready, then sends commit or rollback. Participants hold locks until the coordinator decides.

Type checker

A static analysis tool that checks type annotations without running the code: mypy, pyright. The interpreter itself does not check annotations.

Type coercion

Automatic conversion of a value to another type that JavaScript performs on its own: in ==, arithmetic, if and template literals. For example, '5' * 2 gives 10.

Type erasure

The TypeScript compiler removes type annotations when emitting JavaScript. Types do not exist at runtime: they cannot be checked, reflected on or used as values.

Type guard

A function with the return type value is T: if it returns true, the compiler narrows the argument to T. Whether the check inside is correct is up to its author.

Type hint

A type annotation on a parameter, variable or return value: item_id: int, -> dict. The interpreter does not enforce it, but mypy, IDEs and libraries such as FastAPI and Pydantic read it.

Type stripping

Built-in Node.js support for running .ts files: type annotations are replaced with whitespace, nothing is transpiled and types are not checked. On by default since Node 22.18 and 23.6, stable since 24.12 and 25.2; enum and namespace with runtime code are not supported.

TypedResults

A Minimal API result factory (.NET 7+) that returns concrete types such as Ok<T> and NotFound. The response type is visible in the signature and flows automatically into endpoint metadata and OpenAPI.

TypeScript strict mode

The tsconfig.json flag that turns on the family of strict checks: strictNullChecks, noImplicitAny, strictFunctionTypes and others. On by default since TypeScript 6.0.

Ubiquitous language

A shared vocabulary of developers and domain experts within one bounded context. The same words appear in conversations, requirements, class names and method names.

UI thread message loop

The loop in which the UI thread processes messages one by one: input, repainting, delegates from SynchronizationContext.Post. While the UI thread is busy, the queue stalls and the UI stops responding.

Unboxing

Extracting a value-type value from a boxed object: a type check plus a copy. You can unbox only to the original type or to its Nullable form; otherwise you get InvalidCastException.

uncaughtException

The Node.js process event for an exception that reached the event loop unhandled. By default Node prints the stack and exits with code 1; resuming normal operation after it is not safe.

Unconstrained delegation

A Kerberos mode in which the client forwards its TGT to the server, letting the server act as the user toward any service. Dangerous; Credential Guard blocks it.

Unhandled rejection

A rejected promise with no error handler attached. The browser fires the unhandledrejection event, and Node.js 15+ terminates the process by default.

UnicodeString

Delphi's reference-counted string type that stores text as UTF-16. Since Delphi 2009, string is UnicodeString and Char is the two-byte WideChar.

Unit of work

A set of operations that are performed and saved together as one business transaction. In EF Core a DbContext instance represents a unit of work.

Unit test

An automated test that checks one behavior of a small piece of code in isolation from the database, network and file system. It runs in milliseconds.

Unmanaged resource

A resource outside the managed heap that the GC knows nothing about: a file or window handle, a socket, native memory. It must be released explicitly — through Dispose or SafeHandle.

Unsafe reference [unsafe]

An attribute that turns off reference counting for a reference entirely: no _AddRef, no clearing when the object is destroyed. It costs nothing, but after the object dies it points to freed memory.

Update anomalies

Errors that appear when one fact is stored in several rows: an update changes only some copies, a delete removes unrelated data, and an insert is impossible without a related row.

Upsert (INSERT ... ON CONFLICT)

An "insert, or update if the row already exists" operation. In PostgreSQL it is INSERT ... ON CONFLICT DO UPDATE, atomic under concurrent inserts thanks to a unique index; in SQL Server it is usually MERGE with the HOLDLOCK hint.

URL

A string shaped like https://host:port/path?query#fragment: scheme, host, path, query string and fragment. The server routes on the path and query, while the fragment after # is never sent and stays in the browser.

USE method

A metric set for every resource: Utilization, Saturation (a queue of waiting work) and Errors. Proposed by Brendan Gregg for performance analysis.

useEffectEvent

A React 19.2 hook for logic that reads the latest props and state but must not re-run the effect. Its function is called only from inside effects and is left out of dependencies.

User Secrets (Secret Manager)

Development-time secret storage: an unencrypted secrets.json in the user profile, outside the project directory. WebApplication.CreateBuilder loads it only in the Development environment.

Using declaration

The using var x = ...; form without braces (C# 8): Dispose is called at the end of the scope where the variable is declared. Several declarations are disposed in reverse order.

UTF-16

A Unicode encoding where a character takes 2 bytes, and characters outside the Basic Multilingual Plane (such as emoji) take 4 bytes as a surrogate pair. Used by the Windows API, Delphi strings and .NET.

Utility types

Built-in TypeScript generic types that build a new type from an existing one: Partial, Required, Readonly, Pick, Omit, Record, ReturnType, Awaited and others.

UUIDv7

A UUID version from RFC 9562: the first 48 bits are milliseconds since the Unix epoch, the rest are the version and random bits, so values grow over time. In .NET 9+ it is created with Guid.CreateVersion7().

uv

A Python package and project manager from Astral, written in Rust. It creates environments, resolves and locks dependencies, installs Python versions and runs tools — replacing pip, venv, pip-tools and pipx.

Uvicorn

An ASGI server for Python: it accepts HTTP connections and calls the application on its own event loop. The --workers flag starts several processes.

V8

Google's JavaScript engine, shared by Chrome and Node.js. It compiles and runs JavaScript and manages the heap and garbage collection; it has no I/O of its own — libuv provides that.

VACUUM

A PostgreSQL maintenance command: it removes dead row versions, updates the visibility map and freezes old rows to protect against transaction counter overflow. Usually it is run by the background autovacuum process.

ValidateOnBuild

A ServiceProviderOptions setting that makes the container check during Build() that every registered service can be created. Open generic registrations are not checked; on by default in Development.

ValidateOnStart

An OptionsBuilder<T> method (.NET 6+) that runs settings validation when the host starts. Without it, an error surfaces only on the first access to the settings.

Value equality

Two instances are equal if they have the same type and equal field values, even when they are different objects. Structs and records compare this way by default; classes compare by reference.

Value object

An object without its own identity, defined by the values of its fields: Money, Address, DateRange. It is immutable and compared by value; in C# a record fits it well.

Value type

A type whose variable contains the value itself; assignment copies the value. In C# these are struct, enum and the built-in numeric types.

ValueTask

A struct that represents the result of an asynchronous operation without necessarily allocating a Task. It can be awaited only once.

VCL main thread

The thread in which windows are created and the application's message loop runs. The VCL is not thread-safe, so controls are changed only from this thread.

Version store

Where SQL Server keeps previous row versions for RCSI, SNAPSHOT, triggers and online index rebuilds. Without ADR it lives in tempdb, with ADR in the persistent version store of the database itself.

View component

A class deriving from ViewComponent, with its own view, that loads its own data and renders a block of a page: a cart, a menu. It is invoked from a view, not over HTTP.

View discovery

The process MVC uses to find a view file by name. By default it checks Views/{Controller}/{View}.cshtml first, then Views/Shared/{View}.cshtml.

ViewModel

A class shaped for one specific page: only the fields it shows or accepts. It decouples the view from database entities and protects against overposting.

Virtual environment (venv)

A directory with a link to a Python interpreter and its own set of packages. It isolates one project's dependencies from the system and from other projects.

Virtual method

A method marked virtual or abstract that a derived class can override with override. Which implementation runs is decided by the object's actual type at run time.

Virtual method table (vtable)

A run-time structure of a type with slots holding the addresses of its virtual methods. A virtual call takes the address from the slot in the table of the object's actual type.

Virtual scrolling

A technique where only the visible rows of a long list exist in the DOM, and the rest are swapped in as you scroll. In Angular — cdk-virtual-scroll-viewport from the CDK or the built-in mode of component library grids.

Visitor

A GoF behavioral pattern: operations on a hierarchy move into a separate visitor class with one method per type, and elements call the right method through Accept. Adding operations is easy, adding types is hard.

volatile

A C# field modifier: every access to the field becomes a volatile read or write with acquire/release ordering. It does not make compound operations atomic.

Volume

Data storage outside the container's writable layer, managed by Docker. It survives container removal and, unlike a bind mount, is not tied to a host folder.

W3C Trace Context

A standard for the traceparent and tracestate headers that carry trace context between services. In .NET it is the default ID format of Activity.

WAI-ARIA

A W3C specification of role and aria-* attributes that add to the accessibility tree where HTML lacks semantics. It changes only what the screen reader hears, not how the element behaves.

WCAG (Web Content Accessibility Guidelines)

A W3C standard of testable accessibility success criteria at levels A, AA and AAA. The current version is WCAG 2.2 (October 2023); laws usually require level AA.

Weak reference [weak]

An attribute on an interface reference that does not increment the reference count. When the object is destroyed, the runtime sets all such references to nil, at the cost of tracking weak references. Available on Win32 and Win64 since Delphi 10.1 Berlin.

WebApplicationFactory

A class from the Microsoft.AspNetCore.Mvc.Testing package that runs an ASP.NET Core app in memory on TestServer and hands out an HttpClient for requests to it. It lets you replace services and settings.

WebSocket

A protocol for a persistent two-way connection over a single TCP connection. It starts with an HTTP Upgrade request and a 101 Switching Protocols response.

Window frame (ROWS, RANGE)

The part of OVER that defines which rows relative to the current one take part in the calculation. ROWS counts physical rows, RANGE uses sort key values; with ORDER BY and no frame, RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW applies.

Window function

A function with OVER (...) that computes a value over a set of rows related to the current one and, unlike GROUP BY, does not collapse rows. Examples: ROW_NUMBER, LAG, SUM() OVER.

Window Spool

A SQL Server plan operator in row mode that stores the rows of a window frame. For ROWS with a frame under 10,000 rows it works in memory; for RANGE it uses a worktable in tempdb, which is noticeably slower.

Windows authentication

Signing into a web app with a Windows domain account without typing a password: the browser and the server exchange Kerberos or NTLM tokens in HTTP headers. IIS and ASP.NET Core also call it Negotiate authentication.

WireMock.Net

An HTTP service emulator for .NET: it starts a real HTTP server with canned responses, delays and errors. Used in integration tests of external APIs.

with expression

Creates a copy of a record or a struct with some properties changed: p with { X = 1 }. The copy is shallow: reference-type fields point to the same objects.

Work stealing

A scheduling technique where an idle thread takes work from another thread's local queue. This is how the thread pool balances load without a single point of contention.

work_mem

A PostgreSQL setting for how much memory a single sort or hash operation may use before spilling to disk. It is allocated per such operation in every connection, so large values are set selectively.

Worker Service

A .NET template (dotnet new worker) for a long-running background process without HTTP: a Generic Host plus a class derived from BackgroundService. It runs as a console app, a container, a Windows service or under systemd.

worker_threads

The Node.js module for threads inside a process. Each worker has its own V8 isolate, heap and event loop; data is passed via postMessage or SharedArrayBuffer. Meant for CPU work, not I/O.

Workstation GC

A GC mode with a single heap where the collection runs on the thread that triggered it. The default for console and desktop apps.

Worst case

The complexity on the least favourable input of a given size. It gives a guarantee for any input: quicksort is O(n log n) on average but O(n²) in the worst case.

WOW64

The 64-bit Windows subsystem that runs 32-bit programs. It redirects their system calls, folders and registry, but 32-bit and 64-bit code never mix within one process.

Write skew

A snapshot anomaly: two transactions read the same data, check a condition and change different rows, and together they violate that condition. SNAPSHOT doesn't catch it, SERIALIZABLE does.

Write-through

A pattern in which a write goes to the cache and the source at the same time, so the cache always holds the latest written version. The price is slower writes.

WS-Federation

A browser-based federated sign-in protocol: the app redirects the user to an STS, which posts back a signed token, usually a SAML assertion. In ASP.NET Core it's the Microsoft.AspNetCore.Authentication.WsFederation package.

xmin horizon

The ID of the oldest transaction whose snapshot may still be needed: an open transaction, a replication slot or a replica. VACUUM does not remove row versions newer than the horizon, so a single long transaction causes bloat across the whole database.

XSS (cross-site scripting)

An attack where someone else's JavaScript gets into a page, for example through user data. The script runs in the victim's browser with your site's privileges.

xUnit.net

A popular .NET test framework: [Fact] and [Theory], a new class instance per test, shared resources through fixtures. The current line is v3, package xunit.v3.

YAGNI (You Aren't Gonna Need It)

An Extreme Programming rule: do not implement functionality until it is needed. It does not forbid refactoring and tests that make future changes easier.

YARP (Yet Another Reverse Proxy)

Microsoft's library for building a reverse proxy on ASP.NET Core (the Yarp.ReverseProxy package). Used for API gateways and for migrating ASP.NET apps to ASP.NET Core step by step.

Zod

A schema library for TypeScript: it validates data at runtime and infers a static type from the schema via z.infer. Used at boundaries — API responses, forms, configuration.

zone.js

A library that patches the browser's async APIs (setTimeout, Promise, events, XHR) and tells Angular when tasks finish. That is how the framework knew when to run change detection; since v21 new apps run without it.

Zoneless

Angular without zone.js: change detection runs only on explicit notifications — signals, template events, markForCheck(). Stable since v20.2 and the default for new apps since v21.

Zustand

A small global state library for React: a store is created with create and used as a hook without a provider. A component subscribes with a selector and re-renders only when the selected slice changes.