Sébastien Rigaux

Tech watch

Page 2 of 22

Graphic titled “Multi-Tenant .NET, Part 2 — Shared Database with Schema Separation,” showing a “House for Rent” sign, a circular emblem with two swords, and an illustrated portrait.

Part 2/4 shows how to isolate each tenant’s data in its own SQL Server schema, without a global query filter or a required TenantId column. EF Core can use a simple primary key again, while the database structure itself enforces the isolation boundary.

The key change is model caching: OnModelCreating runs only once per model. The schema must be included in the cache key through IModelCacheKeyFactory, or EF Core may reuse the first tenant’s schema. The article also covers per-schema provisioning and migrations, plus strict validation of schema names interpolated into SQL.

BarretFound via C# Digest

Banner over a photograph of apartment buildings, titled “Multi-Tenant .NET, Part 1 — Shared Database with Partitions,” with a crossed-swords emblem and an illustrated portrait.

This first installment presents a shared-schema .NET multi-tenant design: EF Core filters reads by tenant, while SQL Server physically partitions rows to speed up data access. The key distinction is that partitioning is not a security boundary; isolation relies on the EF Core global query filter.

The article also explains resolving the tenant per request, assigning its ID to new rows, and adding partitions to migrations with raw SQL. The primary key must include GuildId, a constraint SQL Server imposes when partitioning a unique index.

BarretFound via C# Digest

Diagram of an agentic loop: the agent acts, observes, evaluates, then repeats or ends.

Agent loops combine action, observation, and evaluation to refine an answer or retry an operation until it meets a criterion. Jesse Liberty demonstrates the pattern in C# with Microsoft Agent Framework: a loop agent, an evaluator, and an iteration limit.

The example contrasts a deterministic marker such as DONE with a model-based judge, then outlines safeguards to add: timeouts, idempotent calls, logging, and cost tracking. Each iteration adds latency and token usage.

Found via C# Digest

Elephant-Goldfish Model graphic: two panels show a blue elephant that remembers everything and an orange goldfish that remembers nothing.

Elephant-Goldfish Model, Google’s open-source plugin, provides skills to explore an idea, draft a specification, and challenge it before implementation. An “Elephant” agent keeps the project context; “Goldfish” reviewers inspect the document without the conversation history to surface unstated assumptions and risks.

The repository also covers resolving review findings and comparing documentation with code. Reviews require fresh subagent contexts; if the environment cannot create them, EGM stops that step.

A green cover showing the title “Accessibility for Everyone,” Laura Kalbag’s name, and the words “Read for free.”

Laura Kalbag has made Accessibility for Everyone free to read on the web. First published by A Book Apart in 2017, the book is now available to the web community as a resource for learning about accessibility.

Kalbag notes that accessibility best practices have changed little, while some recommended tools and job titles may be outdated; the Web Content Accessibility Guidelines are also approaching version 3.

Laura KalbagFound via Frontend Focus

Image for the GoogleChrome/modern-web-guidance repository, showing the Chrome logo and contributor, issue, star, and fork counts.

Modern Web Guidance gives coding agents expert guidance on browser APIs, CSS, performance, and accessibility, steering them toward native solutions instead of legacy patterns. The repository brings together 232 features and 186 use cases as skills installable in multiple agents.

Its CLI searches locally for a guide and adds it to the agent’s context. The guidance incorporates Baseline compatibility data, targeted fallbacks, and automated evaluation; the project is marked as a preview release.

Found via Frontend Focus

emoji-picker-react provides an emoji picker for React, either with its built-in styling or adapted to a product’s visual design. The interactive playground lets developers try props, CSS themes, and customization examples.

Features include search, skin tones, custom emojis, and multiple languages. Its reactions mode starts with a compact set of popular reactions, then opens access to the full emoji library.

Found via React Status

Puck logo in a blue-to-purple gradient on a white background.

Puck, a visual page editor for React, adds field groups and tabs in version 0.24, along with a checkbox field for selecting multiple options. Drag handles also make it easier to reorder components in nested layouts.

The renderFields API lets you compose these layouts. In the canvas, InlineTextField enables direct text editing, while fieldTransforms transforms values at render time without changing the underlying data.

Fede Bonel TozziFound via React Status

React combines <form action>, useActionState, and useOptimistic to handle pending feedback and optimistic updates while keeping form submission available before JavaScript runs. The article shows how this continuity can enhance the interface after hydration without giving up the browser’s native form behavior.

The key is to keep the server action directly in action: inserting a client function breaks submission without JavaScript. For optimistic updates, useHydrated() lets the form choose between the server action and its client-enhanced version.

Found via React Status

C# code showing Windows, Linux and MacOS records, followed by a SupportedOS union containing those three types.

C# 15 introduces the union keyword to represent a value drawn from several types without forcing them into a base class or losing their type information in object. Andrew Lock shows how switch expressions enforce handling every case, and how to declare unions such as Result<T>.

One performance detail to weigh: the generated implementation stores the value in an object, boxing value types. The article demonstrates a custom implementation using TryGetValue to avoid boxing in switch expressions.

Andrew LockFound via C# Digest

Three basketball players illustrate a sequence: the first holds the ball, the second watches through binoculars, and the third shoots toward the hoop.

In Microsoft Agent Framework, ChatClient middleware intercepts messages exchanged with the LLM, while agent middleware operates on the agent’s overall run, including session, identity, or token-budget management. This distinction helps place logging or modification at the right level.

The C# example adds function-invocation middleware to log calls to the Researcher agent’s Tavily tool, without changing the other agents. The trace shows the function name and its arguments.

Found via C# Digest

Yellow “Buy me a coffee” graphic with a stylized cup.

IfItQuacks lets C# code accept objects that match an interface without implementing it or sharing a base class. The [DuckTyped] attribute invokes a source generator that checks compatibility at compile time and creates an adapter—without reflection or dynamic.

Anonymous types can also act as test stubs: an object such as { Name = "Steven", Age = 90 } can satisfy an IPerson interface. Adapters also preserve identity by forwarding Equals, GetHashCode, and ToString to the wrapped instance.

Steven GieselFound via C# Digest

Article banner showing its title, Ricardo Groß’s name, and the date “Jun 11” on a white background.

CodoMetis.ValueRanges offers .NET range types to replace pairs of dates and their scattered logic. Its five variants—finite, unbounded on either side, infinite, and empty—make possible shapes and rules explicit, while operations such as Contains and Overlaps run in memory.

The companion EF Core package bridges the domain model to PostgreSQL: the same operations are translated into SQL operators through Npgsql. The article also explains the design trade-off: abstract records rather than structs, so each variant can be represented by a type hierarchy.

@Found via C# Digest

Article

WordPress RCE flaw targets the update window

thehackernews.comPermalink
White WordPress logo on layered blue panels, with file paths visible in the background.

A remote code execution flaw in WordPress Core can let an unauthenticated attacker run code during a full-package update if the temporary directory is web-accessible. Wordfence says it blocked 62,969 attempts in 24 hours; a fix is available in version 7.1.4.

The attack hinges on racing cleanup: installer files are unpacked to a predictable path under wp-content/upgrade, and attackers are repeatedly probing files such as setup-config.php to catch the exposure window, which may last only seconds. The flaw affects versions 4.7 through 7.1.3.

The Hacker News

GitHub banner for CVEngine showing its name, a short description, contributor, issue, star, and fork counts, plus a small image of a person holding out their hands.

CVEngine brings continuous asset discovery, vulnerability scanning, and matching against exploited CVEs into a self-hosted platform. It aims to prioritize flaws that actually apply, using read-only validation and evidence rather than presenting only a list of alerts.

Version 1.3 adds Sentinels to run scans from private networks, along with an OpenVAS integration that is disabled by default. Results feed the same inventory and severity ratings; the tool also provides a REST API and MCP integration.

hevnsnt

Snow-covered mountains beneath a purple overlay, with the text “Free Your Marketing! empowered by mautic.”

Mautic is an open-source marketing automation platform that brings together campaigns, email, landing pages, and contact management. It can be self-hosted on an organization’s infrastructure, with a REST API and plugins for integration and extension.

The page also highlights drag-and-drop campaign creation, lead scoring, and privacy-focused features. Cited use cases include sending more than a million personalized, multilingual emails daily for an e-commerce business.

BillionMail GitHub banner showing the project name, a description of a self-hosted mail and email marketing service, and contributor, issue, star, and fork counts.

BillionMail combines a mail server, newsletters, and email marketing in an open-source, self-hosted package. Its repository outlines a setup flow connecting a domain and DNS verification to campaign creation and sending, with list and tag management.

The project supports Docker and installation through aaPanel. It also integrates RoundCube for webmail, offers delivery analytics, and is licensed under AGPLv3; the team running it remains responsible for hosting the service.

Metalama automates cross-cutting C# patterns with aspects that generate code at compile time, while checking architecture rules as you edit. The repetitive implementation stays out of business code and the repository, and one aspect can be applied to a method or to a set of methods selected in code.

For example, an aspect can wrap a method in try/catch to log its entry, result, and exceptions. Metalama also lets you preview and debug the transformed code, making those changes inspectable.

Found via C# Digest

Motherload graphic with the text “Import data files into TypeScript, fully typed” on the left and TypeScript code importing plans.toml, team.yaml, strings.jsonc, posts.csv, notes.md and .env on the right.

Motherload lets you import data files as TypeScript modules typed from their contents. It supports TOML, YAML, JSONC, JSON5, CSV, TSV, Markdown, plain text and .env files; types appear in the editor, and tsc reports parsing errors with their locations.

Type-checking uses TypeScript 7.1 content mappers, currently in beta, and requires --runExternalCode. At runtime, a preload or plugin adapts the same imports for Node.js and a range of bundlers.

Colin McDonnellFound via This week in React