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
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.
The GenAI Reality Check: New Instrument, Same Orchestra

The GenAI Reality Check: New Instrument, Same Orchestra

Barry Smart

AI is like introducing a powerful new instrument to an orchestra. It creates possibilities that didn't exist before. But it still requires musicians who can read music, a conductor with a vision, rehearsal time, and the discipline to play together. An orchestra that lacks these fundamentals won't be saved by a new instrument — they'll just make new kinds of noise.
Ingesting SharePoint Data into Microsoft Fabric: Your Options

Ingesting SharePoint Data into Microsoft Fabric: Your Options

Carmel Eve

SharePoint isn't going away. This post compares five ways to ingest SharePoint data into Microsoft Fabric, with guidance on cost, complexity, and incremental loading.
AI Strategy: Think Top-Down, Experiment Bottom-Up

AI Strategy: Think Top-Down, Experiment Bottom-Up

Barry Smart

Top-down AI strategy and bottom-up experimentation both fail alone: leading organisations combine them to drive real business results.
SQLBits 2026: A Conference Recap

SQLBits 2026: A Conference Recap

Carmel Eve

SQLBits is one of the largest data platform conferences in Europe. Here's a recap of my experience at SQLBits 2026, held at the ICC Wales.
Multi-layer Caching with the Decorator Pattern

Multi-layer Caching with the Decorator Pattern

Jonathan George

Databricks SQL cold starts kill web API performance. Fix it with two-layer caching: Azure Blob Storage & IMemoryCache, using the Decorator pattern.
Fabric Performance Benchmarking - Spark versus Python Notebooks

Fabric Performance Benchmarking - Spark versus Python Notebooks

Barry Smart

Benchmarking Pandas, PySpark, Polars, and DuckDB on Microsoft Fabric: in-process Python engines run 4-5x cheaper and faster than Spark for common workloads.
Medallion Architecture in Excel

Medallion Architecture in Excel

James Broome

Apply the Medallion Architecture to Excel: use the three-tab rule to separate raw data, logic, and output for cleaner, maintainable spreadsheets.
LINQ Max and nullable value types

LINQ Max and nullable value types

Ian Griffiths

LINQ's projecting Max operator has a trap for the unwary when used with value types. Understand what goes wrong, and how to avoid it.
Returning to work after a career break, with help from remote work

Returning to work after a career break, with help from remote work

Carmel Eve

After years away, I returned to work in the UK. Here's how remote flexibility protected my mental health and made that transition possible!
AI-assisted coding is four decisions, not one

AI-assisted coding is four decisions, not one

Mike Evans-Larah

A simple mental model for making sense of the AI-assisted coding landscape: four layers, four decisions.
Integration Testing Azure Functions Part 5: Reqnroll in Build Pipeline

Integration Testing Azure Functions Part 5: Reqnroll in Build Pipeline

Jonathan George

Integration testing Azure Functions with Reqnroll and C#. Part 5 covers running your Corvus.Testing specs in Azure DevOps and GitHub Actions pipelines.