Profile avatar
kevingosse.net
Software developer at Datadog, passionate about .NET, performance, and debugging. Microsoft MVP. Co-author of Pro .NET Memory Management (2nd edition)
1,219 posts 939 followers 734 following
Regular Contributor
Active Commenter

It's hard to focus on your work when @andrewlock.bsky.social knows your weakness

This is a fascinating read. Learn how to do seriously unsafe shit with the NonGC (née Frozen Object) Heap in #dotnet 8 and later.

The fourth part of my series of articles about writing a .NET garbage collector in C# is available. This time, we learn how to walk the heap, and we start using segments to manage our allocation contexts. minidump.net/writing-a-ne... #dotnet

I've published the third part of my series of articles about writing a .NET garbage collector in C#. In this one, we add a helper method to inspect the objects in memory, learning about thread modes and the DAC. minidump.net/writing-a-ne... #dotnet

Can you help me investigate some weird behavior I'm facing on Windows with cscript? I'm running this script: gist.github.com/kevingosse/2... cscript.exe script.js

I published the second part of my series of article about writing a .NET garbage collector in C#. This time, we build the simplest possible GC, capable of running basic .NET apps without ever freeing memory. minidump.net/writing-a-ne... #dotnet

After writing a profiler in C#, I've now published the first of a series of articles about how use C# to... write a .NET Garbage Collector. #dotnet minidump.net/2025-28-01-w...

If you are interested in measuring the latency impact of lock, mutex, semaphore, events in your .NET apps, this article is for you :^) chnasarre.medium.com/measuring-th...

I published part 5 of my "Writing a .NET profiler in C#" series. All the foundations built in the previous articles have been moved to a library named Silhouette. In this new article, we finally have everything we need to write an actual profiler. minidump.net/writing-a-ne... #dotnet

Finally had time over the holidays to realize a long-standing dream of mine: a hex editor that knows about the PE file and .NET metadata format. You can click any byte and it will show you which data structure it is in the tree. Every byte is covered. The parser is at github.com/KirillOsenko...

I migrated ClipPing from WPF to @avaloniaui.net + NativeAOT. Commit size is still surprising to me, but the overall memory usage has been massively reduced.

Since many people are asking for it, I published a first (early) version: github.com/kevingosse/C... Keep in mind that it's really barebone, and there is no "launch at startup" feature yet. In the coming days I'm going to look at how to integrate it into the Powertoys.

I finally got so annoyed with ctrl+c randomly failing that I built a tool for it. It monitors the content of the clipboard, and highlights the active window when a change is detected. It acts as a visual confirmation that you properly copied stuff.

If you noticed in Visual Studio that the execution randomly resumes while stepping through a .NET 9 program, it's not just you. github.com/dotnet/runti... The fix can't come soon enough, the bug is incredibly annoying.

If you're annoyed at Github not showing the files in the build folders when using "Go to file", you can actually customize that behavior by adding the proper lines in your .gitattributes file. docs.github.com/en/search-gi...

The one downside of having a proven track record of debugging crazy issues is that people start assuming you're some kind of magician. Support just sent me a random memory dump and all the information I have is "the customer is having some kind of performance issue, figure it out"

Did you know that you can define a DebuggerDisplayAttribute for a type from another assembly? Just add an assembly-level attribute to your code and specify the Target type: [assembly: DebuggerDisplay(@"\{Color = {Color}}", Target = typeof(Pen))]

Welcome Christophe to Bluesky! 👋 If you don't know him, he shares my love of debugging, and he works at Datadog on the #dotnet profiler. We also worked together on the second edition of the book Pro .NET Memory Management. If you enjoy those topics, I strongly recommend following him!

There are not a lot of companies where you get to discover that some customers declare more than 1000 variables in a single method and it breaks your code.

It's that time of the year. If you're looking for excuses to code for fun, I strongly suggest having a look at advent of code! Like every year, I'll try solving those every day in #dotnet until it gets hard enough that it stops being fun. github.com/kevingosse/a...