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
After the AI Storm: Modern Compute

After the AI Storm: Modern Compute

Ian Griffiths

AI's current hype cycle has driven massive hardware investment. Even if AI disappoints, those hardware capabilities remain. What else can we do with them?
Why Power BI developers should care about PBIR

Why Power BI developers should care about PBIR

Jessica Hill

Power BI's new PBIR format enhances collaboration, version control, and efficiency for developers. Learn key benefits and future implications.
Why Power BI developers should care about Power BI projects (PBIP)

Why Power BI developers should care about Power BI projects (PBIP)

Jessica Hill

Power BI Projects are a game changer for teams building reports; offering a source-control friendly format, CI/CD support, and the ability to edit in a code editor.
Per-Property Rows from JSON in Spark on Microsoft Fabric

Per-Property Rows from JSON in Spark on Microsoft Fabric

Ian Griffiths

Spark doesn't always interpret JSON how we'd like. For example, if each key/value pair in a JSON object is conceptually one item, Spark won't give you a row per item by default. This article shows how to nudge Spark in the right direction.
C# Design Patterns - Iterator - Language Features

C# Design Patterns - Iterator - Language Features

Liam Mooney

This post examines .NET's native support for iterators: IEnumerator<T>, IEnumerable<T>, and IAsyncEnumerable<T>.
Launchpad to Success: Building and Leading Your Data Team

Launchpad to Success: Building and Leading Your Data Team

Barry Smart

High-performance data teams start with C-suite sponsorship, align to organisational goals, adopt a product mindset, and position themselves as innovation engines rather than order takers.
Observe File System Changes with Reactive Extensions for .NET

Observe File System Changes with Reactive Extensions for .NET

Howard van Rooijen

Use Reactive Extensions for .NET to transform FileSystemWatcher events into a powerful and easy-to-use event stream to deal with file system idiosyncrasies.
Json Schema Patterns in .NET - Mapping input and output values

Json Schema Patterns in .NET - Mapping input and output values

Matthew Adams

Convert between unrelated IJsonValue types across API, CRM, and database schemas with near-zero allocation. A schema-first alternative to AutoMapper for JSON-driven .NET applications.
JSON Schema patterns in .NET: Maps of strings to typed values

JSON Schema patterns in .NET: Maps of strings to typed values

Matthew Adams

Set unevaluatedProperties to a schema to turn a JSON object into a Dictionary-like map. The generated C# type implements IReadOnlyDictionary with zero-allocation key comparisons.
JSON Schema patterns in .NET: Numeric enums & pattern matching

JSON Schema patterns in .NET: Numeric enums & pattern matching

Matthew Adams

Plain numeric enums lose their labels in JSON Schema. Using oneOf with const and title/description preserves named, documented numeric values with full pattern-matching support in C#.
Json Schema Patterns in .NET - Enumerations and pattern matching

Json Schema Patterns in .NET - Enumerations and pattern matching

Matthew Adams

JSON Schema's enum keyword constrains values to a fixed set of strings (or mixed types). Corvus.JsonSchema generates strongly typed constants with pattern-matching support in C#.
JSON Schema patterns in .NET: Polymorphism via discriminators

JSON Schema patterns in .NET: Polymorphism via discriminators

Matthew Adams

Use const-valued properties as discriminators in a oneOf union to implement the same polymorphic dispatch pattern used by System.Text.Json, illustrated with JSON Patch operations.
JSON Schema patterns in .NET: Pattern matching & discriminated unions

JSON Schema patterns in .NET: Pattern matching & discriminated unions

Matthew Adams

JSON Schema's oneOf keyword creates exhaustive discriminated unions, solving the two biggest problems with C# inheritance-based unions: invasiveness and missing-case bugs.
Json Schema Patterns in .NET - Interfaces and mix-in types

Json Schema Patterns in .NET - Interfaces and mix-in types

Matthew Adams

Compose multiple independent JSON Schemas into a single type using allOf — the schema equivalent of implementing multiple interfaces, with Corvus.JsonSchema.
Json Schema Patterns in .NET - Creating tuples

Json Schema Patterns in .NET - Creating tuples

Matthew Adams

JSON Schema's prefixItems keyword maps to C# ValueTuples. Combined with unevaluatedItems: false, it creates fixed-length, mixed-type arrays with strongly typed accessors.
Json Schema Patterns in .NET - Working with tensors

Json Schema Patterns in .NET - Working with tensors

Matthew Adams

Fixed-size numeric arrays defined in JSON Schema can be converted to and from Span&lt;T&gt; for use with System.Numerics.Tensors, enabling zero-allocation interop for ML and math workloads.
Json Schema Patterns in .NET - Creating an array of higher rank

Json Schema Patterns in .NET - Creating an array of higher rank

Matthew Adams

Model multi-dimensional arrays (rank 2+) in JSON Schema by nesting array definitions with items. Use minItems/maxItems to fix dimensions or allow ragged arrays.
Json Schema Patterns in .NET - Creating a strongly typed array

Json Schema Patterns in .NET - Creating a strongly typed array

Matthew Adams

Define typed arrays in JSON Schema using items, minItems, and maxItems. Corvus.JsonSchema generates strongly typed accessors, enumerators, and IEnumerable support for LINQ.
Json Schema Patterns in .NET - Constraining a base type

Json Schema Patterns in .NET - Constraining a base type

Matthew Adams

Narrow the validation rules of an existing JSON Schema type by adding tighter constraints on its properties. Unlike OO overrides, constraints compose: both base and derived rules apply.
Json Schema Patterns in .NET - Extending a base type

Json Schema Patterns in .NET - Extending a base type

Matthew Adams

Extend an open JSON Schema type with new properties using $ref — similar to deriving from a base class in C#. Corvus.JsonSchema combines both schemas into one type.
Json Schema Patterns in .NET - Open vs. Closed Types

Json Schema Patterns in .NET - Open vs. Closed Types

Matthew Adams

JSON Schema objects are open by default, allowing extra properties for forwards compatibility — use unevaluatedProperties to close them for strict validation.
Json Schema Patterns in .NET - Reusing Common Types

Json Schema Patterns in .NET - Reusing Common Types

Matthew Adams

Use $ref and $defs to extract shared schema definitions and reuse them across properties. Corvus.JsonSchema generates a single shared .NET type, eliminating duplication.
Json Schema Patterns in .NET - Data Object Validation

Json Schema Patterns in .NET - Data Object Validation

Matthew Adams

Add required fields, string length limits, and numeric range constraints to a JSON Schema data object — and see how Corvus.JsonSchema enforces them in C#.
Json Schema Patterns in .NET - Data Object

Json Schema Patterns in .NET - Data Object

Matthew Adams

Define a simple data object in JSON Schema and generate strongly typed C# with Corvus.JsonSchema — properties, implicit conversions, and fast serialization.
.NET JsonElement and Schema Validation

.NET JsonElement and Schema Validation

Ian Griffiths

Corvus.JsonSchema enables safe use of the very high performance JSON parsing offered by .NET's System.Text.Json.