Sign in

Kevin Gosse

@kevingosse.net
1.2K followers 647 following 1.3K posts

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

PostsRepliesMedia
Kevin Gosse @kevingosse.net · 29/09/2026
I published a new article: the hidden trap of fixed buffers in C#. It explains a quirk of fixed buffers that could easily bite you, if you're one of the few people who still have to use that feature. minidump.net/the-hidden-t...
minidump.net
The hidden trap of fixed buffers in C#
After all, if they’re marked as unsafe, there’s gotta be a reason, right?
164
Kevin Gosse @kevingosse.net · 27/09/2026
I recorded a screen capture and wanted to speed up the parts where I type. Rather than editing it myself, I asked Opus 5.5. I fully expected that I would have to give the timestamps but nope, it figured it out on its own. I'm not even sure how.
030
Reposted by Kevin Gosse
Christophe Nasarre @chrisnas.bsky.social · 21/09/2026
Let's turn to Claude this week in the third episode of my long series about AI harnesses internals - chrisnas.github.io/posts/2026-0...
chrisnas.github.io
Spying on Claude Code: more lifecycle events, different blind spots
How Claude Code hooks differ from Cursor: broader lifecycle and permission telemetry, strong native IDs, batch and compaction events, but no thought or specialized execution hooks.
022
Reposted by Kevin Gosse
Andrew Lock "Sock" @andrewlock.bsky.social · 15/09/2026
Understanding Device Bound Session Credentials (DBSC) andrewlock.net/understandin... In this post I provide an introduction to Device Bound Session Credentials, I look at how DBSC protects against session hijacking, and how the protocol works. #security #dotnet
andrewlock.net
Understanding Device Bound Session Credentials (DBSC)
In this post I provide an introduction to Device Bound Session Credentials, I look at how DBSC protects against session hijacking, and how the protocol works
085
Kevin Gosse @kevingosse.net · 14/09/2026
If you're still not convinced that we live in the future. I had my 4yo old son try "Putt-Putt", an old point&click game for children. He loves it, so I bought the whole series on Steam. However, it turns out half of them aren't localized in French, so he can't play them.
131
Kevin Gosse @kevingosse.net · 04/09/2026
Starting this week, my job at JetBrains changes. I'll be focusing less on ReSharper, and more on agents integration inside our IDEs (Rider, IntelliJ, ...).
152
Reposted by Kevin Gosse
olegkarasik.bsky.social @olegkarasik.bsky.social · 04/08/2026
Just published a new issue of .NET R&D Digest! Thx to @rasbt.bsky.social, @maartenballiauw.be, @andrewlock.bsky.social, @kevingosse.net, @meziantou.net, @simonwillison.net & other authors for their g8 content! olegkarasik.wordpress.com/2026/08/04/n... #dotnet
olegkarasik.wordpress.com
.NET R&D Digest (July, 2026)
This issue includes bits of AI, Security, MS SQL, Performance, C#, HTTP and of course .NET and .NET Internals.
023
Kevin Gosse @kevingosse.net · 01/07/2026
I published part 10 of my "Writing a .NET Garbage Collector in C#" series: minidump.net/writing-a-ne... This time, I implemented support for finalization, which reveals some intricacies of the .NET runtime.
minidump.net
Writing a .NET Garbage Collector in C#  - Part 10: Finalizers
Using NativeAOT to write a .NET GC in C#. In this part, we add support for finalization.
076
Reposted by Kevin Gosse
olegkarasik.bsky.social @olegkarasik.bsky.social · 05/06/2026
One more issue of .NET R&D Digest is here! Thanks to @martinfowler.com, @kentbeck.com, @andrewlock.bsky.social, @b0rk.jvns.ca, and other great authors for the amazing content! olegkarasik.wordpress.com/2026/06/05/n... #dotnet
olegkarasik.wordpress.com
.NET R&D Digest (May, 2026)
This issue includes bits of AI (too much AI), C#, software development, architecture, Windows, security, NTFS and of course .NET and .NET Internals.
193
Kevin Gosse @kevingosse.net · 04/06/2026
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.
020
Reposted by Kevin Gosse
Update Conference @updateconference.bsky.social · 14/05/2026
#UCK26 | Before @kevingosse.net returns to Krakow with another deep technical session this year, take a moment to watch his #UCK25 talk on our YouTube channel www.youtube.com/watch?v=RDaq... krakow.updateconf.net Use special code to get a discount: KEVINGOSSE10 #dotnet #updateconference #krakow
youtube.com
Kevin Gosse | What’s really going on under the hood? The hidden life of method calls.
YouTube video by Update Conference
033
Kevin Gosse @kevingosse.net · 30/04/2026
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.
252
Kevin Gosse @kevingosse.net · 28/04/2026
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.
311
Kevin Gosse @kevingosse.net · 10/04/2026
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.
070
Reposted by Kevin Gosse
olegkarasik.bsky.social @olegkarasik.bsky.social · 03/04/2026
New issue of .NET R&D Digest is here! Thx to @simonwillison.net, @birgitta410.bsky.social, @kief.com, @lemire.bsky.social, @kevingosse.net, @andrewlock.bsky.social, @meziantou.net, @stevesanderson.bsky.social & other authors for their g8 content! #dotnet olegkarasik.wordpress.com/2026/04/03/n...
olegkarasik.wordpress.com
.NET R&D Digest (March, 2026)
This issue includes bits (or I would rather say bytes) of AI, bits of software development, operating systems, web, diagnostics, performance, C++, C#,  and of course .NET and .NET Internals.
093
Kevin Gosse @kevingosse.net · 25/03/2026
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.
140
Kevin Gosse @kevingosse.net · 17/03/2026
Where does the .NET community live nowadays? Because apparently posting a technical article on reddit is considered self-promotion and forbidden except on Saturday. Honestly I'm speechless.
260
Kevin Gosse @kevingosse.net · 17/03/2026
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...
minidump.net
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.
3635
Kevin Gosse @kevingosse.net · 12/03/2026
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.
241
Kevin Gosse @kevingosse.net · 08/03/2026
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.
410
Kevin Gosse @kevingosse.net · 04/03/2026
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).
132
Kevin Gosse @kevingosse.net · 03/03/2026
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.
181
Kevin Gosse @kevingosse.net · 03/03/2026
I published part 8 of my "Writing a .NET Garbage Collector in C#" series. The subject this time is interior pointers: what are they, and why are they so challenging for the GC. minidump.net/writing-a-ne...
minidump.net
Writing a .NET Garbage Collector in C#  - Part 8: Interior pointers
Using NativeAOT to write a .NET GC in C#. This time, we look at what interior pointers are and why they’re so difficult for the GC.
094
Kevin Gosse @kevingosse.net · 23/02/2026
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.
220
Kevin Gosse @kevingosse.net · 21/02/2026
Pro-tip: even if it's tempting, resist the urge to argue with copilot
130
Kevin Gosse @kevingosse.net · 20/02/2026
I got "tricked" by PerfView when using it to measure the effectiveness of my optimizations, so I decided to write about it: minidump.net/an-unexpecte... It's not specific to PerfView though, in theory this could happen with any profiler.
minidump.net
Too good to be true: an unexpected profiler trap
Sometimes the most convincing performance gains deserve a second look. A reminder that profiling data can be more subtle than it first appears.
185
Kevin Gosse @kevingosse.net · 10/02/2026
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...
minidump.net
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.
041
Kevin Gosse @kevingosse.net · 27/01/2026
After a long wait, I've finally published the sixth part in my "Writing a .NET Garbage Collector in C#" series. Today, we start implementing mark and sweep. minidump.net/writing-a-ne...
minidump.net
Writing a .NET Garbage Collector in C#  - Part 6: Mark and Sweep
Using NativeAOT to write a .NET GC in C#. In the sixth part, we start implementing the mark phase of the garbage collection.
0116
Kevin Gosse @kevingosse.net · 31/12/2025
If you missed this video, I strongly recommend watching it. It's a great introduction to 3D graphics, short and easy to understand. I had a lot of fun reimplementing it in Winforms and text mode.
120
Kevin Gosse @kevingosse.net · 17/12/2025
Today I ran into a deadlock in VS2026. I debugged it, and it turned out to be a common issue you may run into when writing a profiler. I wrote a short article about it: minidump.net/investigatin...
minidump.net
Investigating a deadlock in Visual Studio
A short investigation that showcases one of the most common problem faced when writing a profiler.
084
Kevin Gosse @kevingosse.net · 17/12/2025
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!
052
Reposted by Kevin Gosse
Andrew Lock "Sock" @andrewlock.bsky.social · 16/12/2025
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
andrewlock.net
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
0133
Kevin Gosse @kevingosse.net · 11/12/2025
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.
120
Kevin Gosse @kevingosse.net · 08/12/2025
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.
111
Kevin Gosse @kevingosse.net · 02/12/2025
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.
060
Kevin Gosse @kevingosse.net · 19/11/2025
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.
121
Kevin Gosse @kevingosse.net · 06/11/2025
Fun fact: you can't use print screen to capture a screenshot of a crash of SnippingTool
0120
Reposted by Kevin Gosse
Update Conference @updateconference.bsky.social · 06/11/2025
#UCP25 | Kevin Gosse - The Hidden Life of Method Calls Kevin reveals in his session what really happens when your code runs: ➡️ calling conventions ➡️ stack frames ➡️ JIT compilation ➡️ virtual dispatch ➡️ CPU-level mechanics ➡️ prague.updateconf.net #DotNet #Performance @kevingosse.net @woodruff.dev
042
Kevin Gosse @kevingosse.net · 01/11/2025
I had a ton of fun at Techorama NL. It's not everyday that you get a chance to debug variadic .NET functions on a giant movie theater screen.
140
Kevin Gosse @kevingosse.net · 30/10/2025
We are getting closer to the release of Resharper 2025.3 , so I ran some performance tests to see how much we improved compared to 2025.2. For this iteration, I focused my effort mainly on the huge Datadog.Trace solution, available on the DataDog/dd-trace-dotnet repository. Results below 👇
211
Kevin Gosse @kevingosse.net · 21/10/2025
I just published a new article: Using profiler function hooks in .NET with Silhouette. In the process, we also learn how to use static linking with NativeAOT. minidump.net/using-functi...
minidump.net
Using profiler function hooks in .NET with Silhouette
In this article, we see what are function hooks, and how to use them in .NET with Silhouette. We also learn how to statically link a library with NativeAOT.
076
Reposted by Kevin Gosse
Bruce "86 47" Dawson @randomascii.bsky.social · 09/10/2025
New blog post: In 2021 I found an invisible memory leak in a tool (VS Code) that I have never used. Impossible? Easy: randomascii.wordpress.com/2025/10/09/f...
randomascii.wordpress.com
Finding a VS Code Memory Leak
In 2021 I found a huge memory leak in VS code, totalling around 64 GB when I first saw it, but with no actual limit on how high it could go. I found this leak despite two obstacles that should have…
15315
Kevin Gosse @kevingosse.net · 26/09/2025
There's an even more adverse effect to the way closures are allocated: sharplab.io#v2:EYLgxg9gT... Because the same closure is reused for different calls, you can end up extending the lifetime of some of your objects without realizing it.
220
Kevin Gosse @kevingosse.net · 24/09/2025
Top thing I wish I had known earlier as a software engineer: before leaving a company, make sure to download your favorite slack emojis, so you don't have to frenetically look for them on the web when you realize they're missing from the new slack.
160
Kevin Gosse @kevingosse.net · 22/09/2025
Worked at Datadog, encountered crashes because of mysterious race-conditions in .NET writeable metadata: github.com/dotnet/runti... Moved to JetBrains, encountered crashes because of mysterious race-conditions in .NET writeable metadata: github.com/dotnet/runti... I think I'm cursed.
060
Kevin Gosse @kevingosse.net · 18/09/2025
As requested, I published an article about how the UI profiler works: minidump.net/measuring-ui... It allows me to measure the responsiveness of Visual Studio when running with ReSharper, in various conditions. I also made the source code available on github: github.com/kevingosse/U...
minidump.net
Measuring UI responsiveness in Resharper
A walkthrough of how I built a custom profiler to measure UI responsiveness, using .NET and Silhouette.
1157
Kevin Gosse @kevingosse.net · 10/09/2025
Congrats to Microsoft on this new release, I've been using it for a few weeks now and it really feels great. Note that Resharper is already compatible, if you want to try it!
152
Kevin Gosse @kevingosse.net · 03/09/2025
Not entirely sure what I'm going to do with all that money.
021
Kevin Gosse @kevingosse.net · 01/09/2025
I just discovered that whenever you create a closure in a generic C# method, the closure is also generic even when it's not needed. This is very frustrating to me because generics cause performance issues in Resharper (see bsky.app/profile/kevi...) sharplab.io#v2:EYLgxg9gT...
130
Kevin Gosse @kevingosse.net · 01/09/2025
Monday
100