The tool can be installed from Winget:
winget install KevinGosse.ClipPing
Or directly from github: github.com/kevingosse/C...
I rewrote it entirely in C++ because RAM isn't cheap anymore.
The tool can be installed from Winget:
winget install KevinGosse.ClipPing
Or directly from github: github.com/kevingosse/C...
I rewrote it entirely in C++ because RAM isn't cheap anymore.
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.
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...
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.
Pro-tip: even if it's tempting, resist the urge to argue with copilot
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.
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...
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...
I learned programming on a 80286 with Qbasic. Out of curiosity I checked how this demo would run on that hardware (~1500 cycles/s in dosbox).
Way too slow in QB 1.1 (interpreted), even in CGA. Much better in QB 4.5 (compiled), though it would need some double-buffering to fix the flickering.
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.
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...
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
Anyway, if you're using their backup client, you'll probably want to know that they have hidden exclusion rules, and they exclude .git folders by default: www.reddit.com/r/backblaze/...
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.
That sounds crazy but honestly I've seen crazier stuff. I'll give it a try, thanks.
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.
Yeah, it looks like they really want those changes to propagate quickly, and so they cut corners. And when you do, it always backfires sooner or later π
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.
Fun fact: you can't use print screen to capture a screenshot of a crash of SnippingTool
#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
It is! VS2026 shows this exception whenever I debug this solution (github.com/kevingosse/T...)
Something to do with hot reload apparently, but I tried completely disabling hot reload and that doesn't fix it.
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.
Is that a Resharper issue? It already happened to me in the past but I always assumed it was VS. I'll try debugging it next time.
Total startup time:
2025.2: 148 seconds
2025.3: 127 seconds (15% improvement)
UI freezes during startup:
2025.2: 93 seconds
2025.3: 46 seconds (50% improvement)
Shutdown:
2025.2: 30 seconds
2025.3: 10 seconds (67% improvement)
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 π
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...