Kirill Osenkov (@kirillosenkov.com) reply parent
it's the brainworm wearing rfk suit
(Unofficial) VP of Developer Productivity at Microsoft. Developer tools, engineering systems, .NET, C#, Roslyn, Visual Studio, Editor, WPF, Avalonia, MSBuild.
1,315 followers 248 following 464 posts
view profile on Bluesky Kirill Osenkov (@kirillosenkov.com) reply parent
it's the brainworm wearing rfk suit
Kirill Osenkov (@kirillosenkov.com) reply parent
*.* matches files with no extension
Kirill Osenkov (@kirillosenkov.com) reply parent
ironically *.* will match files without extensions, so there's no point in using it. Just use *
Kirill Osenkov (@kirillosenkov.com)
I just learned that Directory.GetFiles with pattern 1.txt.* matches 1.txt, and it's the OS behavior:
Avalonia UI (@avaloniaui.net) reposted
Text rendering remains one of the most challenging aspects of building cross-platform UI frameworks We've built a small test app to make it easier to identify and resolve text rendering issues ❤️
Kirill Osenkov (@kirillosenkov.com)
Wow, @drewnoakes.bsky.social and I have debugged deep into MSBuild just now to bring you this magnificent and horrifying MSBuild behavior: github.com/dotnet/msbui...
Damian Edwards (@damianedwards.com) reposted
File-based C# apps & support for stdin to `dotnet run -` makes it incredibly easy to check behavior of APIs in .NET 10!
Kirill Osenkov (@kirillosenkov.com)
I'd like to be able to use this word more generally, when something is made worse due to pervasive incompetence, greed and mediocrity
Scott Hanselman 🌮 (@scott.hanselman.com) reposted
Microsoft’s 6502 BASIC is now Open Source opensource.microsoft.com/blog/2025/09...
Kirill Osenkov (@kirillosenkov.com) reply parent
this is super well written and demystifies worktrees for me! Thanks!
Safia Abdalla (@captainsafia.com) reposted
I’m picky about my dev workflow, so adopting new tools takes time. But I’ve used git worktrees exclusively for the past year and have loved it. 🌟 They’ve been game-changing as my engineering impact/scope has grown. More details on my setup: blog.safia.rocks/2025/09/03/g...
Miguel de Icaza (@migueldeicaza.bsky.social) reposted
Today we are launching Xogot for iPhone, along with a free edition. The iPhone has been a challenging process for shrinking the UI even further. Check the details on @josephhill.bsky.social blog post: blog.xogot.com/make-games-a...
Steve Syfuhs (@syfuhs.net) reposted
My sibling team that owns the core passwordless systems in Windows is hiring an SDE II. Great team, interesting projects. jobs.careers.microsoft.com/global/en/jo...
Kevin Jones (@vcsjones.dev) reposted reply parent
Great post! Something I think missed (because it is not correctly documented😀) is `dotnet tool install --allow-roll-forward`. You can use this when installing a tool to force it to allow roll forward, even if the tool itself doesn't. Unfortunately I can't recall which SDK introduced it.
Kirill Osenkov (@kirillosenkov.com) reply parent
CloudFlare is exactly what I needed! Squarespace wanted to charge me $60 for an .org domain, CloudFlare did $8.
Kirill Osenkov (@kirillosenkov.com)
What's a good domain registrar nowadays?
Paul Vick (@panopticoncentral.net) reposted
This article reminded me of a funny story. A long time ago, I just started on the Visual Basic team and was trying to diagnose an issue with some math processing code. I asked someone who to talk to and they say, "Oh, you should talk to Tim, but he doesn't work Mondays or Fridays, so...
Kirill Osenkov (@kirillosenkov.com) reply parent
I love these stories!!
Kirill Osenkov (@kirillosenkov.com) reply parent
for MSBuild, have you seen msbuildlog.com
Quanta Magazine (@quantamagazine.bsky.social) reposted
Given the code of a computer program, can you tell whether it will eventually stop or run forever? In 1962, the mathematician Tibor Radó invented a new way to explore this question through what he called the busy beaver game. www.quantamagazine.org/busy-beaver-...
Kirill Osenkov (@kirillosenkov.com) reply parent
thanks, I guess I'm so used to Ordinal and uppercase before lowercase that this threw me off
Kirill Osenkov (@kirillosenkov.com) reply parent
ordering chars works the same way as Ordinal for strings, which is what I would expect: (new [] { 'C', 'b', 'a', 'B', 'A', 'c' }).OrderBy(s => s) 'A', 'B', 'C', 'a', 'b', 'c'
Kirill Osenkov (@kirillosenkov.com)
Hmm, I have to confess, this is unexpected for me. Lowercase letters come before uppercase? Intuitively it feels that uppercase should come first?
Kirill Osenkov (@kirillosenkov.com) reply parent
this is a sunrise of rare beauty, wow
Kirill Osenkov (@kirillosenkov.com) reply parent
I've seen people make the actual lambda static, like static (foo, state) => ...; See github.com/KirillOsenko...
Fati Iseni (@fiseni.com) reposted reply parent
Here, I reproduced it in a simple example. Anyhow, lesson learned. Never assume an "unreachable" code won't have any effect.
nohwnd (@jakubjares.com) reposted
In .NET10 we are rolling out new dotnet test experience for Microsoft.Testing.Platform. I worked on the outputs together with Mariam and other folks in our team. Here is where we ended up. Hope you like it :) devblogs.microsoft.com/dotnet/dotne... #dotnet #microsofttestingplatform
Kirill Osenkov (@kirillosenkov.com) reply parent
Stephen Toub once sent a PR to the binlog viewer adding a bunch of statics to lamdbas, and I had a similar revelration moment
Kirill Osenkov (@kirillosenkov.com) reply parent
I've seen guidance to mark the lamdbas static to avoid closing on things, and pass the state they need as additional args to lamdbas
Kirill Osenkov (@kirillosenkov.com)
Just saw an Ioniq 5 N on the road for the first time, looks great
Kirill Osenkov (@kirillosenkov.com) reply parent
I'd love to see President Ocasio-Cortez or President Abughazaleh elected before I die but it's not going in that direction. A stunning vacuum on the left, so depressing.
Kirill Osenkov (@kirillosenkov.com) reply parent
very pretty
Kirill Osenkov (@kirillosenkov.com)
Someone left a plate of peanuts in the kitchen ...on the day our annual rewards are being announced
Kirill Osenkov (@kirillosenkov.com) reply parent
you've built the Lightroom for games!
WalkingCat (@h0x0d.bsky.social) reposted
PDC 2003 - Introducing MSBuild: Build Engine for "Whidbey" and "Longhorn" - Alex Kipman, Rajeev Goel - 2003/10 www.youtube.com/watch?v=q4VG...
Patrik Svensson (@patriksvensson.se) reposted
I've open-sourced my OpenCLI generator for System.CommandLine (the latest preview): www.nuget.org/packages/ope... Add the package to your project, and call `AddOpenCli()` on your root command. Now you can write an OpenCLI description to stdout by passing "--opencli" to your application.
Kirill Osenkov (@kirillosenkov.com) reply parent
I'm not moving just yet, but wanted to prepare an account just in case
Kirill Osenkov (@kirillosenkov.com) reply parent
bsky.app/profile/kiri...
Kirill Osenkov (@kirillosenkov.com)
codeberg.org/KirillOsenkov
Kirill Osenkov (@kirillosenkov.com) reply parent
the feeling is mutual! I'll buy anything from you
Kirill Osenkov (@kirillosenkov.com)
Kirill: here's SourceBrowser Everyone: wow, it's great! Kirill: here's RoslynQuoter Everyone: wow, it's great! Kirill: here's Binlog Viewer Everyone: wow, it's great! Kirill: here's a new internal tool Everyone: we're reluctant to try it, how do we know it's going to be any good?
Kirill Osenkov (@kirillosenkov.com) reply parent
yup, reporting to Jay Parikh
Kirill Osenkov (@kirillosenkov.com) reply parent
I think he couldn't take your criticism and resigned in shame
Kirill Osenkov (@kirillosenkov.com) reply parent
DevDiv got subsumed by AI, so what Thomas was saying is just the official party line now
Kirill Osenkov (@kirillosenkov.com) reply parent
bsky.app/profile/thev...
Kirill Osenkov (@kirillosenkov.com) reply parent
bsky.app/profile/thev...
Kirill Osenkov (@kirillosenkov.com) reply parent
Kirill Osenkov (@kirillosenkov.com) reply parent
fuck ice
Chet Husk (@chethusk.bsky.social) reposted
Hey #dotnet - we on the .NET SDK team are all about making the `dotnet` CLI more capable and powerful over time. But how do you usually _get_ the `dotnet` CLI and other tooling? Today that answer is a _bunch_ of different ways. We have a plan to centralize these ways into a new tool, and...
Steve Love (@stevelove.bsky.social) reposted
I'm proud to announce that my book C# Brain Teasers has now been released! 21 puzzles for C# programmers of all levels of experience joins the #brainteasers collection from @pragprog.com. pragprog.com/titles/cshar... #dotnet #csharp #brainteasers #exerciseyourmind
The Pragmatic Bookshelf ✅ (@pragprog.com) reposted
Our newest BrainTeasers title - for C# From @stevelove.bsky.social Now out of Beta and released into print medium.com/pragmatic...
Patrik Svensson (@patriksvensson.se) reposted
A while back, I created "dotnet make" which will invoke your favourite build tool (cake, fake, make, nuke, csproj, fsproj, proj, sln) by convention, regardless of the current working directory in the repository. github.com/patriksvenss...
Ink & Switch (@inkandswitch.com) reposted
The Ink & Switch team is coming through London and we're having a social to share some recent news and research from the lab, and catch up with people in London interested in local first, malleable software, and other similar areas of making better computing. Aug 16th, 6pm in London
Kirill Osenkov (@kirillosenkov.com) reply parent
I was filing a GitHub issue yesterday, then authed into GitHub enterprise in another tab, then came back, submitted the form, it gave an error that I don't have the rights to file issues, reloaded and lost all my data. Back button didn't save the fields. Can you please ask AI to fix that 😅
ILSpy - .NET Decompiler (@ilspy.bsky.social) reposted
A #csharp 14.0 feature to expect in the next #ILSpy preview for #dotnet 10 is extension members (not final, see github.com/icsharpcode/...)
Kirill Osenkov (@kirillosenkov.com)
PSA: cursor is mouse caret is keyboard
Sebastian Lague (@sebastianlague.bsky.social) reposted
I made a little game for the gmtk jam! sebastian.itch.io/family-time Leave a link if you participated as well, I'd love to check out some entries this evening :)
Kirill Osenkov (@kirillosenkov.com) reply parent
@keansbox.com I forgot to mention this
Kirill Osenkov (@kirillosenkov.com) reply parent
my two favorite books are GoF Design Patterns and Peopleware
Kirill Osenkov (@kirillosenkov.com) reply parent
we found what it was: bsky.app/profile/arch...
Kirill Osenkov (@kirillosenkov.com)
I was always annoyed by the StringBuilder API Append/AppendLine and that it returns a StringBuilder, so not convertible to an Action. I have recently started using StringWriter instead (it's a very thin wrapper around StringBuilder), but now it's a proper TextWriter, and I'm very happy.
Kevin Jones (@vcsjones.dev) reposted
My team at @github.com is hiring for a senior product security engineer! www.github.careers/careers-home...
Avalonia UI (@avaloniaui.net) reposted
After a 2-year hiatus, join Mike & Steven for an exclusive preview of the upcoming Visual Studio extension, discussions on v12, and we'll answer any questions you have about Avalonia! Live stream starts at 15:00 CET www.youtube.com/watch?v=bo1e...
Kirill Osenkov (@kirillosenkov.com) reply parent
someone must have added Homebrew support, I have no idea how it works. I'm such a windows boomer.
Kirill Osenkov (@kirillosenkov.com) reply parent
which OS are you on? We now have notarized dmgs
Kirill Osenkov (@kirillosenkov.com) reply parent
sorry, that became too hard to maintain and I had to abandon it. Does the Avalonia version not work for you?
Kirill Osenkov (@kirillosenkov.com)
Published a big update to the Graph Viewer: github.com/KirillOsenko... Also an ability to view arbitrary directed graphs in .dot format, as I found this layered graph representation to be quite useful for other things, such as viewing assembly dependencies.
Patrik Svensson (@patriksvensson.se) reposted
I spent my whole evening (my precious "me time") writing a lot of text because I decided to build #opencli by gathering feedback instead of YOLOing it. I could have been watching The Wire instead, so I hope it was worth it. github.com/spectreconso...
Jon Skeet (@jonskeet.uk) reposted
Follow-up blog post to my previous one about C# records and the "with" operator... now with added Roslyn analyzers: codeblog.jonskeet.uk/2025/07/29/r...
Kirill Osenkov (@kirillosenkov.com) reply parent
then you should find whoever authored the generator and have them debug.
Kirill Osenkov (@kirillosenkov.com) reply parent
the next step is open the MSBuild binlog, search for $csc, click on Parameters -> Analyzers, and find which .dll that analyzer might come from. Then use the $nuget search syntax to understand which NuGet package that is. github.com/KirillOsenko...
Kirill Osenkov (@kirillosenkov.com) reply parent
yes, your problem is Kahua.generators.dll not sure what that is, clearly some third-party thing
Avalonia UI (@avaloniaui.net) reposted
Meet Beutl - a FOSS video editor built with Avalonia! 🎬 ✅ Runs on Windows, macOS & Linux ✅ GPU-accelerated compositing ✅ Keyframes & pro effects ✅ Extensible plugin system ✅ 100% .NET This is what modern cross-platform looks like! 🚀 github.com/b-editor/beutl
Jen Gentleman (@jenmsft.bsky.social) reposted
❌ You fidget ✅ You have an idle animation
ErikEJ (@erikej.bsky.social) reposted
Cross platform and cross tooling support for building SQL Project (.dacpacs) - use our community build SDK with Visual Studio and VS Code, fully integrated NuGet package support and much, much more buff.ly/6skbe3z #dotnet #sqlserver
Kirill Osenkov (@kirillosenkov.com) reply parent
oh, and when you're debugging, don't forget to turn off Just My Code in the debugger
Kirill Osenkov (@kirillosenkov.com) reply parent
or use Help -> Send Feedback -> Report a Problem, and use another instance to record a trace of the problem
Kirill Osenkov (@kirillosenkov.com) reply parent
you can let it run for a bit and break again, maybe you'll catch it in the act. Or, go to Tools Options, and disable the separate process for Roslyn. Then attach to devenv.exe, it'll be more noticeable in the devenv process. Or, use a profiler such as www.getcodetrack.com and profile
Kirill Osenkov (@kirillosenkov.com) reply parent
no, you want the Call Stack and Threads. If the Call Stack doesn't show the analyzer, try switching to other threads. If no analyzer is found, press F5 to run again and press Break when it hangs next.
Avalonia UI (@avaloniaui.net) reposted
Tired of debugging blind? ✓ 3D Layout Inspector ✓ Real-time Event Tracking ✓ Live Asset Browser ✓ Structured Logging Level up today → avaloniaui.net/accelerate
Kirill Osenkov (@kirillosenkov.com) reply parent
try attach + break, or profile. Can't see which analyzer is to blame from the memory profiler
Kirill Osenkov (@kirillosenkov.com) reply parent
to confirm whether it is the same analyzer or not you can attach a different VS instance as a debugger to the first instance, and press break to see which analyzer is on the stack. Or profile. My favorite is CodeTrack.
Kirill Osenkov (@kirillosenkov.com) reply parent
aftermorrow sounds better imho
Merriam-Webster (@merriam-webster.com) reposted
'Overmorrow' refers to "the day after tomorrow," but it has really only been used as an adjective/adverb, and also hasn't had much usage since the 16th century.
Kirill Osenkov (@kirillosenkov.com) reply parent
came here to suggest this
Kirill Osenkov (@kirillosenkov.com) reply parent
yes, see here: bsky.app/profile/kiri...
Sergiy Teplyakov (@steplyakov.bsky.social) reposted
Hey guys. Async methods might be scary for some, but they're not that complicated if you can debug the async machinery to understand how they work! This is exactly what I did in the last video - "Let's debug async/await in C#". youtu.be/oHKyzgGjKHQ?...
Jordan Matthiesen (@jordanmatthiesen.me) reposted
Hey folks! Know anyone looking for a product manager with deep experience working on C#, JavaScript, mobile, web and AI developer tools? I'm on the market and looking for new opportunities! You can read up on my history here: linkedin.com/in/jordanmat... Feel free to DM me as well.
Jon Skeet (@jonskeet.uk) reposted
First pass at Roslyn analyzers for the "record/with footgun" is now available, albeit very hacky. Two analyzers, one of which requires that you annotate any record parameter used in an initializer with [DangerousWithTarget] (an attribute you declare yourself as DangerousWithTargetAttribute).
Jon Skeet (@jonskeet.uk) reposted
Blogged: Unexpected inconsistency in records - codeblog.jonskeet.uk/2025/07/19/u... - if you use C# records and the "with" operator, I'd suggest reading this to avoid a footgun you may be unaware of
Jen Gentleman (@jenmsft.bsky.social) reposted reply parent
Multiple desktops as a feature exists on both Windows 10 and 11, although we did make some improvements in 11. You can manage them from task view (WIN + Tab), and there are also keyboard shortcuts: WIN + Ctrl + D --> New desktop WIN + Ctrl + Left / Right --> switch WIN + Ctrl + F4 --> Close desktop
Mattias Karlsson (@devlead.se) reposted reply parent
Just blogged about it bsky.app/profile/cake... Been working on this on and off since .NET preview 4, custom SDK together with source generator results in a really compelling end user story👍
Kirill Osenkov (@kirillosenkov.com)
Happy "Unicode calendar emoji shows the actual current date" day to all those who celebrate: quickinfo.io?calendar
jaredpar (@jaredpar.bsky.social) reposted
It is so neat seeing tech like this built on top of the dotnet run app.cs work that we're doing.
Alvin Ashcraft (@alvinashcraft.com) reposted
Identify Which Process Is Blocking a File in Windows | by Orin Thomas. buff.ly/3jll5QS #sysinternals #windows #utilities #poweruser #itpro
Kirill Osenkov (@kirillosenkov.com) reply parent
they are perfectly parallel in an inertial frame of reference, it's not your fault that the gravity of the room warps spacetime to make everything else around look distorted
Kirill Osenkov (@kirillosenkov.com) reply parent
haha it took me a second