Learn multi-model support in GitHub Copilot SDK: configure GPT-5 and Claude in C#, compare capabilities, build model-agnostic .NET apps.
This has results for Postgres versions 12.22 through 18.3 with the Insert Benchmark on a small server. My previous post for the same hardware with results up to Postgres 18.1 is here. This post also has results for:
Postgres continues to be boring in a good way. It is hard to find performance regressions. Performance wasn't always stable, but I am reluctant to expect it to show no changes because there are sources of variance beyond the DBMS, especially HW (a too-hot SSD or CPU will run slower). Sometimes perf changes because there are obvious perf bugs, sometimes it changes for other reasons.
tl;dr for a CPU-bound workload
Pretext solves the problem of calculating the height of a paragraph of line-wrapped text without touching the DOM. The usual way of doing this is to render the text and measure its dimensions, but this is extremely expensive. Pretext uses an array of clever tricks to make this much, much faster, which enables all sorts of new text rendering effects in browser applications.
Here's one demo that shows the kind of things this makes possible:
The key to how this works is the way it separates calculations into a call to a prepare() function followed by multiple calls to layout().
The prepare() function splits the input text into segments (effectively words, but it can take things like soft hyphens and non-latin character sequences and emoji into account as well) and measures those using an off-screen canvas, then caches the results. This is comparatively expensive but only runs once.
The layout() function can then emulate the word-wrapping logic in browsers to figure out how many wrapped lines the text will occupy at a specified width and measure the overall height.
I had Claude build me this interactive artifact to help me visually understand what's going on, based on a simplified version of Pretext itself.
The way this is tested is particularly impressive. The earlier tests rendered a full copy of the Great Gatsby in multiple browsers to confirm that the estimated measurements were correct against a large volume of text. This was later joined by the corpora/ folder using the same technique against lengthy public domain documents in Thai, Chinese, Korean, Japanese, Arabic, and more.
Via @_chenglou
Tags: browsers, css, javascript, testing, react, typescript
What your .NET exceptions are telling attackers (and how to stop it)
6 minutes by Adrian Bailador
Unhandled exceptions in .NET APIs expose stack traces, database schemas, and internal paths to anyone watching. Adrian explains how to implement secure error handling in ASP.NET Core to protect your application without sacrificing observability.
Your .NET code is moving at 2026 speeds. Your CI is still in 2015.
sponsored by Depot
Every build: cold VM, restore packages, rebuild from scratch. Depot CI is a new CI engine that runs your existing GitHub Actions workflows — but jobs start in 2-3 seconds, steps run in parallel, and you can SSH into a failing build instead of reading logs. One command to migrate, $0.0001/sec to run. Same YAML, same actions, no rewrite.
The evolution of validation techniques in ASP.NET
8 minutes by Bipin Joshi
Bipin describes how validation in ASP.NET started as a UI feature tied to page controls in Web Forms, then moved to model decorators in MVC, and finally became a pipeline service in ASP.NET Core. Today it runs automatically, rejecting bad requests before they reach business logic. Blazor brings back stateful UI but keeps validation model driven. Across all versions, validation shifted from a convenience tool to a core part of how systems enforce boundaries.
Speed up .NET CI with test sharding
3 minutes by Gérald Barré
Test sharding splits your test suite into smaller subsets that run in parallel across multiple CI jobs, so you wait for the slowest shard instead of one long run. Meziantou.ShardedTest is a .NET tool that handles this by listing, sorting, and distributing tests across shards automatically. Gérald argues that it works well when your test stage is slow, but adds little value if tests are small or mostly waiting on IO. He suggests you can combine it with built-in framework parallelization for even faster feedback.
MAUI Avalonia now supports Linux and WebAssembly
6 minutes by Tim Miller
Avalonia now has a backend for .NET MAUI, letting developers deploy MAUI apps to Linux and WebAssembly. Setup takes just four steps and requires no extra bootstrapping code. The project also improved Avalonia itself, including new navigation controls now available to all Avalonia 12 users. Both native and drawn UI options are supported, giving developers more flexibility over how their apps look across platforms.
.NET synchronisation APIs: Out-of-process synchronisation
6 minutes by Ricardo Peres
This is the second in a series of posts on .NET synchronisation. Ricardo talks about using the synchronisation APIs in out-of-process context, meaning, to synchronise different processes, not threads. This can be achieved out of the box with three synchronisation objects: Mutex, Semaphore and EventWaitHandle. Ricardo also describes Shared files which offer another option but can leave stale locks after a crash. On Windows, you can also control access using permissions tied to specific users or groups.
And the most popular article from the last issue was:
Apple's most legendary computer has two legacies: there's the computer itself, and there's the commercial. That commercial. Only a couple of days before Steve Jobs debuted the computer that would both help cement his legacy and contribute to his unceremonious exile from Apple, the company dropped a Super Bowl ad that is still one of the most iconic commercials of all time. It raised both the hype and the stakes for the Macintosh in a big way.
The Macintosh wasn't a great computer, at least at first. It didn't have enough memory; there wasn't enough software that supported it; it wasn't customizable in the ways PC users needed at the time. I …