Kevin Gosse

@kevingosse.net

Principal engineer at JetBrains, passionate about .NET, performance, and debugging. Microsoft MVP. Co-author of Pro .NET Memory Management (2nd edition)

Does anybody know a way to monitor token usage in Copilot in Visual Studio? The github dashboard only shows the total, I would need the count per session.

A coworker wrote a small tool to monitor the activity of Windows Defender. I recommend giving it a try. For instance I discovered that Defender was continuously scanning the activity of the Backblaze backup agent on my machine, wasting a lot of CPU time. I fixed it by adding a process exclusion.

Bild

Up until now, I've always used PowerPoint for my talks: WYSIWYG, can get something decent just by dragging a few elements around. However it quickly becomes a nightmare when dealing with animations or complex layouts.

I'm developing a bridge to allow agents to interact with my Windbg session. I tested it with an old dump, the agent ran a bunch of commands and immediately crashed Windbg. So now we're debugging Windbg.

Bild

I'm still experimenting with exactly how to include it in my workflow, but Claude is so good at reverse engineering that it's really a game changer for advanced debugging. Everything is open-source if you're fluent in assembly code.

Bild

Have you ever noticed that a simple .NET Core applications on 64-bit uses more than 2TB of virtual memory? In a new episode of the series "writing a .NET garbage collector in C#", we discover the kind of problem that it intends to solve: minidump.net/writing-a-ne...

Writing a .NET Garbage Collector in C#  - Part 9: Frozen segments and new allocation strategy

Using NativeAOT to write a .NET GC in C#. In this part, we look at what the GC must do to properly handle frozen segments, and we change the allocation strategy to make it more efficient.

minidump.net

I like Copilot CLI but the billing model stresses me out a little. Because there's no hourly or daily limit, I worry that I might run out of requests before the end of the month, and use them very conservatively. Then I end the month with a lot of unused quota. So I built a tool.

Bild

I'm trying GPT-5.4 and scratching my head when seeing the generated code. What reasoning process could lead to explicitly initializing to null a property, _and_ using the null-forgiving operator.

Bild

ClipPing got a major update! The tool displays a visual notification whenever the content of the clipboard changes, for all of you who are tired of ctrl+c not working. I added configurable overlays, and some QoL improvements (like automatically starting the tool with Windows).

It's crazy that Windows will post notifications for the most unsignificant stuff (like the unfamous "Windows Defender Antivirus did not find any threats"), but I had to check my event viewer for completely unrelated reasons to randomly discover that one of my HDDs is dying.

Bild

I'm surprised that "dotnet tool install -g" uses the local nuget config, if any. For local tools, I get it. For global tools, I would expect it to always use the userprofile config. Sounds a bit dangerous? Like, if you run the command from your Downloads or temp folder and you have a leftover file.

Bild

I published a new article in my "Writing a .NET GC in C#" series. This time, we implement a better storage for the handles, and we properly mark them during garbage collection. We also see why DependentHandles are annoying to deal with. minidump.net/writing-a-ne...

Writing a .NET Garbage Collector in C#  - Part 7: Marking handles

Using NativeAOT to write a .NET GC in C#. In the seventh part, we scan and update the handles during the mark phase of the garbage collection.

minidump.net

Visual Studio 2026 18.1.1 has been released. I strongly recommend upgrading if you're using ReSharper, as it fixes an issue that was making startup significantly slower. Thanks a lot to the VS team for their reactivity!

Blogged: Creating a .NET CLR profiler using C# and NativeAOT with Silhouette andrewlock.net/creating-a-d... In this post I look at how to create a simple .NET profiler. But instead of using C++, the profiler uses C# and NativeAOT with @kevingosse.net's Silhouette library #dotnet

Creating a .NET CLR profiler using C# and NativeAOT with Silhouette

In this post I look at how to create a simple .NET profiler. But instead of using C++, the profiler uses C# and NativeAOT with the Silhouette library

andrewlock.net

I like the peace of mind that @backblaze.bsky.social is offering, especially after my recent SSD crash. But god, their support is beyond bad. I've contacted them twice, and both times I had to solve the issue myself after a completely unhelpful exchange.

There are Mondays, and then there are "the computer doesn't recognize the dev SSD anymore" Mondays. Samsung 990 Pro 2TB. I tried pretty much everything I could think of, including moving it to a different M2 slot. Suggestions are welcome. The drive doesn't appear in the bios.

I was investigating a crash, and pasted my windbg output to ChatGPT to see if it could come up with any lead. It noticed something that I completely missed, a memory area that I dumped in binary was actually a string (even though it's not supposed to be). That's really nice and unexpected.

Bild

Focusing on the Rust Unwrap in the CloudFlare outage is really the scalability equivalent of "When a sage points to the moon, all the fool sees is the finger". At that scale, failures *will* happen. Programming error are unavoidable. What's interesting is why it took down the entire system.