#629 – October 11, 2026
based on complete wiring map of a fruit fly brain from Google and HHMI
A fruit fly's brain simulated in C#
24 minutes by Konrad Kokosa
Google and HHMI Janelia published the complete wiring map of a fruit fly brain in 2026, and the internet quickly made it "play" video games. This post explains what those demos actually do: the measured wiring is real, but the parts that make the fly behave are hand-built adapters converting game state into neuron signals and back. Konrad built dotFly, a C# engine that runs all 166,700 neurons in real time on a laptop, running about 11 times faster than comparable JavaScript implementations.
Run any coding agent inside Rider, backed by real IDE intelligence. Meet JetBrains Air.
sponsored by Jetbrains
JetBrains Air turns Rider into one home for all your coding agents, even Claude Code on your own Claude subscription in a full-screen tab. Run several agents in parallel across projects and see updates, changed files, and commits at a glance. Then review diffs with the IDE tools you already trust and commit with confidence. Junie Lite is free until the end of the year. Try it in Rider 2026.3 EAP!
Persisting a rich domain model with EF Core
10 minutes by Milan Jovanović
EF Core dropped the requirement for public setters and parameterless constructors years ago. It can load and save fully encapsulated aggregates by writing directly to backing fields through a private constructor. Strongly typed IDs, private collections, value objects, and domain events all map through configuration classes that the domain never touches. The ORM was never the real reason for an anemic model.
Stripping extra dependencies in .NET NativeAOT apps
8 minutes by Andrew Lock
In this post, Andrew describes how he customized the linker for a NativeAOT application to remove a whole web of dependencies that he knows will never be needed, but which the linker was unable to determine directly that it could remove. By using method substitutions, you can significantly reduce the size of the final NativeAOT binary, by enabling additional dead-code elimination.
Try catch and the importance of awaiting async methods
3 minutes by Tore Aurstad
Tore explains why async void methods in C# can cause exceptions to bypass the caller’s try-catch block. For fire-and-forget tasks, use async Task and handle exceptions inside the method. When the caller needs to catch errors, use async Task and await the method. This makes error handling more predictable and helps prevent unexpected application crashes.
ChatClient Middleware vs. Agent Middleware
5 minutes by Jesse Liberty
The Microsoft Agent Framework uses two types of middleware. ChatClient Middleware intercepts messages between the agent and the language model, useful for logging and debugging. Agent Middleware works at a higher level, managing overall agent behavior like sessions and resource use. Both types support function-invocation middleware, which lets developers track and modify specific tool calls with minimal code changes.
And the most popular article from the last issue was: