@KirillOsenkov@mastodon.social
@KirillOsenkov@mastodon.social avatar

KirillOsenkov

@KirillOsenkov@mastodon.social

(Unofficial) VP of Developer Productivity at Microsoft. Developer tools, engineering systems. .NET, C#, Roslyn, Visual Studio, Editor, WPF, Avalonia, MSBuild.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

I remain convinced that global.json only causes harm and has no positive benefits whatsoever. Just cloned a repo, it failed to build. Deleted global.json. Repo builds now.

Almost looks like it's the opposite effect from what they were hoping to achieve.

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

Um, I just learned how hardlinks work and I'm terrified.

If your build uses hardlinks, turn them off, unless you absolutely know what you're doing.

If you create a hardlink from 1.txt to 2.txt, then edit 2.txt, 1.txt content will be edited too. If your build has double-writes, and a hardlinked file at the destination is overwritten from another destination, the first file at the source will be overwritten by the second file at the source. This is terrifying. Complete havoc.

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

Francois Valdy, the author and primary maintainer of https://github.com/gluck/il-repack moved on from .NET around 2018, and PRs have been piling up. He was kind and gracious and made me a co-maintainer on the repo and gave me the rights to push to NuGet.

I just made a new release of ILRepack!

https://github.com/gluck/il-repack/releases/tag/2.0.19

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

I am now addicted to publishing all my tools as dotnet global tools.

Current list:
https://github.com/KirillOsenkov/dotfiles/blob/main/DotnetTools.cmd

If you work with .NET and builds and assembly versions, I recommend you check them out! They're all open-source.

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

This pretty much sums up my relationship with Microsoft Corporation:

https://www.furia.com/page.cgi?type=log&id=473

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

Went on LinkedIn to look at the current landscape of (gestures vaguely) our industry and everything in 2023.

What can I say.

Part of me wants to go back to 2006 and fork off a different reality for our industry. I really don’t like this one. I don’t belong here. I want to crawl back into my cave, curl up into fetal position and work on desktop apps using WPF, with no AI or telemetry of any kind.

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

My take is that the community’s response to Moq would have been absolutely justified had there been actual malicious intent by an adversary.

Knowing Kzu I can attest that there was absolutely no such intent, and he has always deeply cared for the ecosystem. The value delivered by Moq is immense. We grabbed our pitchforks too soon and a civil discussion needs to be had first. He doesn’t deserve being treated like this.

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

Witnessing debt in a large codebase. Small things, like tons of repeated code in tests. Instead of extracting a helper or finding existing code that does what you need, people just copy-paste or slap something together and move on.

I think it's natural that people want to get their task done and move on, and don't care about keeping the "cesspool" clean.

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar
KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

Anyone know MSBuild and NuGet well and want to work at Microsoft?

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

Does anyone here know .NET metadata well? @ilspy @jbevain

There's this assembly: https://www.nuget.org/packages/Oracle.ManagedDataAccess/21.13.0

It has a string field a::b (in namespace "" type a), which has a numeric sbyte constant 32.

Understandably, Cecil refuses to roundtrip it. Is it an artifact of obfuscation? PEVerify doesn't give any specific warning or error for this one.

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

Wait, does C# not have the boolean &&= and ||= assignments? Am I going crazy? I could swear it was supported?

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

I really liked this announcement of Mojo by @jh:
https://www.fast.ai/posts/2023-05-03-mojo-launch.html

To give you a taste of why it resonated:

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

I’ve been in MS for 15 years and I still have no idea who Stakeholders are, and only a vague notion about silo, siloed and harness. Do you have any corp words that you don’t quite know the meaning of?

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

Just had an idea for an AsyncBufferedStream which prefetches the next buffer on another thread while the current buffer is being read. Then when ReadByte() wants to refill the buffer, you just blocking wait on the next buffer, then swap the buffers and kick off another task for the next buffer. I'm sure something like this must exist already?

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

I just described a real situation with

"the right people have left, and the people left have no rights"

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar
KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

Embedding files as resources inside a .NET assembly doesn't have to be complicated:

https://github.com/KirillOsenkov/MSBuildTools/commit/d8afc187fa7be3771743e223a31765a68248f4e5

Just add an EmbeddedResource item:

<EmbeddedResource Include="embedded.txt">  
 <LogicalName>embedded.txt</LogicalName>  
</EmbeddedResource>  

and then read like this:

var assembly = typeof(Program).Assembly;  
var stream = assembly.GetManifestResourceStream(@"embedded.txt");  
var reader = new StreamReader(stream);  
var text = reader.ReadToEnd();  
KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

I spent all of today digging very deep into NuGet static graph restore source code to investigate a crash, which resulted in this beast of a bug:
https://github.com/NuGet/Home/issues/12993

I don't even remember what I was supposed to be working on. At this point I think the MSBuild, NuGet and SDK teams should just employ me full time, if I'm doing this all day anyways. The problem is that if they do, they will give me OTHER TASKS, and I will continue not doing them in favor of shaving yaks like today.

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

I'm not leaving, but just in case I'm now also on Bluesky:
https://bsky.app/profile/kirillosenkov.bsky.social

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

When people say "native UI for Windows", what do they even mean? GDI/User? hWnd/hDC? Or is WPF native enough? Or is it WinUI/UWP? Which era buttons are considered native? At least on macOS I understand pretty well what native means. Windows is always such a disaster it's embarrassing.

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

delete your global.json

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

You guys, @avaloniaui is magic. Wow.

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

Reminder that I made https://quickinfo.io where you can quickly look up answers to certain classes of questions instead of googling and wading through bad results full of ads and spam.

Demo: https://quickinfo.io/?demo

Usages: https://quickinfo.io/?%3F

Many people still google em dash, shrug, degree sign, etc. They open a website from results, it is slow and full of ads. It shows a cookie banner. There is a better way.

KirillOsenkov, to random
@KirillOsenkov@mastodon.social avatar

If you're in Seattle area, get outside and look up!

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • mdbf
  • thenastyranch
  • Durango
  • tester
  • khanakhh
  • DreamBathrooms
  • Youngstown
  • magazineikmin
  • everett
  • slotface
  • InstantRegret
  • kavyap
  • rosin
  • JUstTest
  • osvaldo12
  • ethstaker
  • normalnudes
  • tacticalgear
  • cisconetworking
  • cubers
  • ngwrru68w68
  • GTA5RPClips
  • modclub
  • anitta
  • provamag3
  • Leos
  • lostlight
  • All magazines