Woohoo, .NET Conf 2026, I'll be talking about SE.Redis v4 in the community days - probably active:active, client-side-caching, with that as a segue into custom commands and the new high-perf reader/writer API (no session links yet, but: dotnetconf.net/)
Today's job: psychic debugging
PR to review: "reverts #...." - that's it, the entire body. I super want to give them the benefit of the doubt and assume there is a reason or some context, but they're not replying to me. Very frustrating. Closing it is easy, but... dammit!
RC2 didn't fix it, so logged: github.com/dotnet/runtime/is… - this is a hard "oof" for SE.Redis, otherwise (as in: performance collapses)
I thought I'd re-run my SE.Redis "async runtime" (.NET 11) checks; instead, found a catastrophic perf collapse in RC1, that I *think* (testing now against "daily") is already fixed for RC2 (github.com/dotnet/runtime/pu…). Fun!
I thought I'd re-run my SE.Redis "async runtime" (.NET 11) checks; instead, found a catastrophic perf collapse in RC1, that I *think* (testing now against "daily") is already fixed for RC2 (github.com/dotnet/runtime/pu…). Fun!
Marc Gravell retweeted
Sure, OpenAI may have released yet another bot assistant thing.
But I just shipped a convenient package for C# devs to source generate enum metadata.
htmlcsstoimage.com/blog/fanc…
Which do you think is a bigger deal?
Marc Gravell retweeted
Need the "Connect protocol" (gRPC semantics over plain http)? see: protobuf-net.Connect connect.protobuf-net.dev - works with both protobuf-net and Google.Protobuf .NET types, fully AOT
Having fun exploring interpolated string handlers: github.com/StackExchange/Sta…
Versioning is hard... spotted in the wild:
~/.nuget/packages/xunit.v3.core.mtp-v2/4.0.0/buildTransitive/xunit.v3.core.mtp-v2.targets
so... which version is that?
More quality-of-life things in SE.Redis, so you don't find problems at runtime - Roslyn is a heck of a drug:
Marc Gravell retweeted
Protobuf "editions" support in protobuf-net: docs.protobuf-net.dev/editio…
(including DELIMITED in .proto, which has been in protobuf-net code-first since 2008)
Marc Gravell retweeted
Hot on the heels of protobuf-net, protobuf-net.Grpc goes AOT: grpc.protobuf-net.dev/aot
protobuf-net finally goes AOT in v3.3 with build-time generator support! protobuf-net.github.io/proto…
Marc Gravell retweeted
protobuf-net's online schema and payload tools are resurrected and improved, finally, and with a new home: protobuf-net.dev/
Marc Gravell retweeted
protobuf-net finally goes AOT in v3.3 with build-time generator support! protobuf-net.github.io/proto…
LLMs in code; about 18 months ago I was firmly on the "artisanal hand-written code" side of things; I'm very much a convert now - the code was never the goal: solving tech problems was. Most of my time now goes into designing features and correctness tests, which is far more (1)
valuable than any actual code, which is ultimately transient. I'm about to merge a feature into protobuf-net that I've wanted *for years* (build-time "AOT" emit), but which I'd failed repeatedly to land, as it is tedious iterative slog; LLMs *excel* at that, especially when (2)
there are robust validity tests; a 60kloc feature that would never have arrived without claude (claude.com/contact-sales/cla…). You need to think of it as an intern and provide all the safety fences, but: it is alarmingly competent.
I confess to feeling inordinately happy about how this shower-thought idea turned out...
 and StringSet[Async](key, value, ValueCondition.Equal(expected)), respectively](https://pbs.twimg.com/media/HPCA1-WWYAAMcW4.jpg?name=small&format=webp)
ALT Image shows a C# IDE with two methods that perform Redis transactions; one StringSetAsync with a Condition.KeyNotExists, the other a StringSetAsync with Condition.StringEqual; the condition lines have warnings in the IDE and a console "dotnet build" advising the user that these operations can be expressed as StringSet[Async](key, value, When.NotExists) and StringSet[Async](key, value, ValueCondition.Equal(expected)), respectively








