Sign in

Michal Strehovský

@migeel.sk
709 followers 120 following 96 posts

I help building the .NET runtime at Microsoft. My tweets are my own opinions and/or shitposts, not the official party line.

PostsRepliesMedia
Michal Strehovský @migeel.sk · 19/05/2026
I'll be speaking at the .NET Developers meetup in Tokyo on June 9th!
Tokyo .NET Developers Meetup #67 - Native AOT And Runtime Async, RSVP at tokyo-dotnet.com
020
Michal Strehovský @migeel.sk · 06/05/2026
1/N I vibe-coded a C compiler that targets .NET IL. It can build unmodified PureDOOM into a .NET app that runs on both .NET 10 and desktop framework.
1134
Michal Strehovský @migeel.sk · 07/11/2025
Sorry but the off-color corner of the new Word icon looks like a compression artifact when taskbar is set to small (and sorry but small & never combine & show labels is the only correct taskbar configuration on Windows, this is not macOS).
290
Michal Strehovský @migeel.sk · 19/12/2024
3/3 There is also a dark mode now if your system is set to dark mode.
020
Michal Strehovský @migeel.sk · 19/12/2024
2/3 Despite being a dotnet tool (that are not supposed to be native) I compile sizoscope with native AOT now. It starts visibly faster. It will also thunk to Wine if you're not on Windows so installing the tool on non-Windows works great (provided you installed Wine). Looks like this on my Ubuntu:
140
Michal Strehovský @migeel.sk · 19/12/2024
1/3 New version of sizoscope, my tool to analyze size of .NET native AOT executables, is out! It can now show you sizes of some of the blobs within the executable just to give a more complete picture.
1194
Michal Strehovský @migeel.sk · 27/11/2024
Thanksgiving is approaching in the US and that means time with family. People in your family were presented with this dialog in the past and probably just clicked the button Google wanted them to click. Ask them if they want to browse the web, or if they want web to browse them.
Enhanced ad privacy dialog in Google Chrome
070
Michal Strehovský @migeel.sk · 26/11/2024
JIT compiled .NET will often be faster than AOT compiled .NET thanks to dynamic PGO. But AOT compilation has some tricks up the sleeve too. In .NET 9, the TechEmpower JSON benchmark ends up a bit faster with AOT.
Screenshot of TechEmpower JSON benchmark showing 2,921,958 rps with AOT and 2,920,527 rps with JIT.
182
Michal Strehovský @migeel.sk · 20/11/2024
3/4 Windows will not allow you to choose this notepad in the "Open with" dialog. If you choose it, you'll be presented with the below window. To fix it, Regedit to HKEY_CLASSES_ROOT\Applications\notepad.exe and delete the NoOpenWith value.
110
Michal Strehovský @migeel.sk · 20/11/2024
2/4 Typing notepad<enter> in PowerShell is going to have a ~1 in 10 chance of opening notepad.exe in notepad instead of a blank document (wtf). The fix is to delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe
210
Michal Strehovský @migeel.sk · 20/11/2024
1/4 Life hack: uninstalling the Notepad app in Windows 11 gives you back old notepad.exe that starts faster and uses less memory. This Notepad is going to be a bit cursed and registry hacks are needed to uncurse it. 👇
292
Michal Strehovský @migeel.sk · 18/11/2024
The .NET native AOT compiler used to have an unsupported mode where it broke all reflection for size savings. I added the mode in 2019 when Hello World was 4 MB and with broken reflection only 1 MB. It was a good goalpost. In .NET 9 they're both ~1 MB: goalpost reached! github.com/dotnet/runti...
"Grant Gustin Next To Oliver Queen's Grave" meme with the name on the gravestone replaced to read "Reflection-free mode 2019 - 2024".
2324
Michal Strehovský @migeel.sk · 13/11/2024
6/N Now look at the same program compiled with TrimmerRootAssembly. Since we told the compiler SomeField could be a target of reflection, this no longer optimizes to zero.
110
Michal Strehovský @migeel.sk · 13/11/2024
5/N Whole program view that the compiler builds requires knowing what things are targets of reflection. Take this program for example. We know SomeField is not target of reflection, we know nothing assigns it. We know it will always be 0 and compile it as such.
110
Michal Strehovský @migeel.sk · 11/11/2024
.NET conf 2024 is this week and I'll go deep into native AOT on Friday!
081
Michal Strehovský @migeel.sk · 18/09/2024
030
Michal Strehovský @migeel.sk · 12/09/2024
Different ways .NET makes sure your code is done fast.
020
Michal Strehovský @migeel.sk · 21/05/2024
1/ There is now a 4 MB portable ZIP version of my Sizoscope tool (built with C# and WinForms) that runs on Windows and Linux. While WinForms in the .NET 9 nightlies is still not fully trim-safe or AOT-safe it didn't require too many hacks to get native AOT working with Sizoscope.
110
Michal Strehovský @migeel.sk · 02/01/2024
For my next trick I'm going to build a 64 MB self-contained game in C# and then shrink it to 1936 bytes in 10 steps. Read all about it in my latest article: migeel.sk/blog/2024/01...
053
Michal Strehovský @migeel.sk · 25/11/2023
Made a bare metal bootable maze "game" in C# as a demo of what's possible with bflat's zerolib. Anyone interested in reading a write-up of how I did it? Source here: github.com/MichalStreho...
030
Michal Strehovský @migeel.sk · 15/11/2023
New version of Sizoscope, my tool to inspect size of .NET native AOT binaries is out. If you're on .NET 9, the tool will now show you "frozen objects", a frozen part of the GC heap that the compiler generated ahead of time. They're the result of executing your code ahead of time.
171