Skip to content

Browse our blogs activity over the years…

  • Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
2026
OpenAPI Code Generation with Corvus: Typed HTTP Clients

OpenAPI Code Generation with Corvus: Typed HTTP Clients

Matthew Adams

Generate strongly-typed HTTP clients from OpenAPI 3.x specs using the Corvus CLI - zero-allocation models, exhaustive response matching, and built-in schema validation with a single dotnet tool command.
Optimising DAX: Model Design Comparisons and Testing Tips

Optimising DAX: Model Design Comparisons and Testing Tips

Carmel Eve

Star schema vs flat table vs header/detail - which Power BI model design gives you the best performance? This post compares all three and covers practical testing tips.
Microsoft Fabric Workspace Topology Patterns

Microsoft Fabric Workspace Topology Patterns

James Broome

Workspace topology is one of the first decisions you'll make in Microsoft Fabric, and one of the hardest to undo once you're underway. This post will help you start with the right foundations in place.
Optimising DAX: The Cost of Relationships

Optimising DAX: The Cost of Relationships

Carmel Eve

Relationships in Power BI aren't free. This post explains how the cardinality of the relationship key determines traversal cost, and why this has big implications for model design.
Announcing Fabric Weekly: a free Microsoft Fabric newsletter

Announcing Fabric Weekly: a free Microsoft Fabric newsletter

Carmel Eve

Fabric Weekly is a free weekly newsletter covering everything Microsoft Fabric. Sign up to stay on top of the latest features, updates, and community content.
Optimising DAX: Why Cardinality Matters

Optimising DAX: Why Cardinality Matters

Carmel Eve

Column cardinality is one of the biggest factors in Power BI model size and query speed. This post explains why, and covers practical techniques for reducing it.
Introducing Corvus.Text.Json V5: Migration, Analyzers, and What's Next

Introducing Corvus.Text.Json V5: Migration, Analyzers, and What's Next

Matthew Adams

Migrating from V4 to V5 is straightforward with Roslyn analyzers and code fixes. V4 isn't going away - both engines are maintained. Plus: 10 production analyzers to help you write correct, high-performance code.
Introducing Corvus.Text.Json V5: TOON - Compact JSON for LLMs

Introducing Corvus.Text.Json V5: TOON - Compact JSON for LLMs

Matthew Adams

Corvus.Text.Json.Toon provides bidirectional TOON conversion - a compact text format that removes repeated property names and punctuation from JSON, reducing token count for LLM prompts with zero-allocation UTF-8 APIs.
Introducing Corvus.Text.Json V5: Extended Types

Introducing Corvus.Text.Json V5: Extended Types

Matthew Adams

V5 extends the JSON type system with UTF-8 URI and IRI parsing, arbitrary-precision numerics via BigNumber, and first-class NodaTime date/time integration. All operating directly on the raw UTF-8 bytes.
Introducing Corvus.Text.Json V5: JSON Pointer - Zero-Allocation Path Resolution

Introducing Corvus.Text.Json V5: JSON Pointer - Zero-Allocation Path Resolution

Matthew Adams

Corvus.Text.Json V5 includes Utf8JsonPointer, a readonly ref struct that resolves RFC 6901 JSON Pointer paths directly against the pooled-memory document model with no allocation.
Introducing Corvus.Text.Json V5: JSON Patch

Introducing Corvus.Text.Json V5: JSON Patch

Matthew Adams

Corvus.Text.Json.Patch implements RFC 6902 JSON Patch with a fluent PatchBuilder and all six operations. Patches operate directly on the mutable document model with no intermediate copies.
Introducing Corvus.Text.Json V5: YAML 1.2 - Zero-Allocation Conversion

Introducing Corvus.Text.Json V5: YAML 1.2 - Zero-Allocation Conversion

Matthew Adams

Corvus.Text.Json.Yaml converts YAML 1.2 to JSON with 100% yaml-test-suite conformance using a custom ref struct tokenizer - no intermediate object model, no allocations on the hot path.
Introducing Corvus.Text.Json V5: JsonLogic - Safe Business Rules

Introducing Corvus.Text.Json V5: JsonLogic - Safe Business Rules

Matthew Adams

Corvus.Text.Json.JsonLogic provides a safe, side-effect-free rule engine that evaluates JSON-encoded business logic on average 3× faster than JsonEverything - with zero allocations.
Introducing Corvus.Text.Json V5: JMESPath - On Average 28× Faster JSON Queries

Introducing Corvus.Text.Json V5: JMESPath - On Average 28× Faster JSON Queries

Matthew Adams

Corvus.Text.Json.JMESPath implements the full JMESPath spec with 100% conformance, zero-allocation hot paths, and on average 28× faster than JmesPath.Net across 21 benchmarks.
Introducing Corvus.Text.Json V5: JSONata - Query and Transform JSON

Introducing Corvus.Text.Json V5: JSONata - Query and Transform JSON

Matthew Adams

Corvus.Text.Json.Jsonata brings the full JSONata language to .NET - 100% test suite conformance, on average 2× faster than Jsonata.Net.Native with 90–100% less memory, plus a source generator for compile-time code generation.
Introducing Corvus.Text.Json V5: Standalone Evaluator and Annotations

Introducing Corvus.Text.Json V5: Standalone Evaluator and Annotations

Matthew Adams

The standalone evaluator generates a lightweight validator with fully compliant JSON Schema annotation collection - ideal for form generators, schema-driven UIs, and documentation tools.
Introducing Corvus.Text.Json V5: Mutable Documents

Introducing Corvus.Text.Json V5: Mutable Documents

Matthew Adams

JsonDocumentBuilder and JsonWorkspace provide pooled, version-tracked mutable documents - the core V5 design trade-off that replaces V4's immutable-functional model with in-place mutation.
Introducing Corvus.Text.Json V5: Pooled-Memory Parsing

Introducing Corvus.Text.Json V5: Pooled-Memory Parsing

Matthew Adams

ParsedJsonDocument<T> uses ArrayPool-backed memory for just 136 bytes of GC pressure per document - 91% less than JsonNode - while providing a familiar System.Text.Json-compatible API.
Introducing Corvus.Text.Json V5: Schema Validation - 10× Faster

Introducing Corvus.Text.Json V5: Schema Validation - 10× Faster

Matthew Adams

Corvus.Text.Json V5 validates JSON against all major schema drafts over 10× faster than other .NET validators - with a simple EvaluateSchema() API and optional detailed diagnostics.
Introducing Corvus.Text.Json V5: Source-Generated Types

Introducing Corvus.Text.Json V5: Source-Generated Types

Matthew Adams

Annotate a partial struct with [JsonSchemaTypeGenerator] and get strongly-typed properties, validation, serialization, and mutable builders - all generated at build time with full IntelliSense.
Introducing Corvus.Text.Json V5: Why V5 Exists

Introducing Corvus.Text.Json V5: Why V5 Exists

Matthew Adams

Corvus.Text.Json V5 is a new engine for high-performance JSON in .NET - pooled-memory parsing, mutable documents, source-generated types, and three query languages. Here's why we built it.
Optimising DAX: VertiPaq Encoding Techniques

Optimising DAX: VertiPaq Encoding Techniques

Carmel Eve

VertiPaq fits millions of rows in memory by compressing columns. Learn how value, hash and run-length encoding work, and what they mean for model performance.
Optimising DAX: How VertiPaq Stores Your Data

Optimising DAX: How VertiPaq Stores Your Data

Carmel Eve

VertiPaq stores Power BI data column-by-column rather than row-by-row. That makes aggregations fast and cross-column queries the trickiest part of DAX.
Optimising DAX: A Series Introduction

Optimising DAX: A Series Introduction

Carmel Eve

Optimising DAX in Power BI: VertiPaq storage, compression, model design, how queries run through the storage, formula engines, and performance patterns.
Microsoft Fabric variable libraries: best practices guide

Microsoft Fabric variable libraries: best practices guide

Carmel Eve

Variable libraries in Microsoft Fabric manage environment-specific configuration. Learn where you can use them and how to set safer defaults for Dev/Test/Prod.