Kirill Osenkov @kirillosenkov.com · 05/10/2026Added some fun new drawings to Live Geometry: livegeometry.com/gallery/magi... livegeometry.com/gallery/trea... livegeometry.com/gallery/fire... livegeometry.com/gallery/gold... livegeometry.com/gallery/kale... livegeometry.com/gallery/circ... To win kids' hearts and minds you gotta have emoji 041
Kirill Osenkov @kirillosenkov.com · 02/10/2026Avalonia @avaloniaui.net has been beyond amazing while working on Live Geometry. The same C# app works on Windows, Mac and in the browser: 092
Kirill Osenkov @kirillosenkov.com · 02/10/2026Aperiodic monotile: livegeometry.com/gallery/aper... 051
Kirill Osenkov @kirillosenkov.com · 02/10/2026My long-standing dream finally came true! A visualization of a dependency DAG drawing arrows without intersections. Each selected figure depends on a couple of figures before it in the topological sort order. This way you can see the closure of all dependencies for any figure. 090
Kirill Osenkov @kirillosenkov.com · 30/09/2026strangely, @davidfowl.com and NuPack make an appearance in 2010: 010
Kirill Osenkov @kirillosenkov.com · 30/09/2026I've been in the geometry business for 27 years. I just reconstructed the timeline of working on it since 1999: livegeometry.com/history 130
Kirill Osenkov @kirillosenkov.com · 29/09/2026if you want to win modern kids' hearts and minds, you have to support emoji 100
Kirill Osenkov @kirillosenkov.com · 24/09/2026Announcing Live Geometry: livegeometry.com Try it out especially if you have geometry-aged kids. Built using @avaloniaui.net 52814
Kirill Osenkov @kirillosenkov.com · 04/09/2026Stampeded! from the @ilspy.bsky.social team is a new intelligent code review tool with semantic navigation: www.youtube.com/watch?v=r16Y... github.com/icsharpcode/... 0123
Kirill Osenkov @kirillosenkov.com · 29/08/2026GitHub recently changed the color for the C# language from green to the slate blue .NET uses #7355DD and I just can't get used to it. C# was always green, VB was always blue. I get what they were going for but I dunno. 2271
Kirill Osenkov @kirillosenkov.com · 28/08/2026Lunar eclipse is visible now in Seattle area, look east 190
Kirill Osenkov @kirillosenkov.com · 26/08/2026ILSpy working in a browser: osenkov.com/ilspy Powered by @ilspy.bsky.social and @avaloniaui.net 43911
Kirill Osenkov @kirillosenkov.com · 25/07/2026his initials are the first two bytes of every PE file in the world 060
Kirill Osenkov @kirillosenkov.com · 15/07/2026MSBuild binlog viewer downloads have fallen off the cliff since ~March: msbuildlog.com/stats/ My interpretation is that AI is solving MSBuild issues, as well as less and less people using MSBuild. Also hopefully modern MSBuild and SDK is more pit of success. 351
Kirill Osenkov @kirillosenkov.com · 12/07/2026This made me dig up how I did drag and drop for C# statements in my old structured editor from 2006 - you could only drag them where the grammar allowed it github.com/KirillOsenko... 1302
Kirill Osenkov @kirillosenkov.com · 29/06/2026First real-world scenario comparison of my new agent harness against VS Code and Copilot CLI. I still need to tune KV caching but I'm very pleased that it is done much sooner and in much fewer model calls. All start on the same commit, same model, same prompt. 191
Kirill Osenkov @kirillosenkov.com · 14/04/2026Anyone with synesthesia here? What color is the foreach statement? I'd be curious what color people would pick, I'm sure it's very individual. 130
Kirill Osenkov @kirillosenkov.com · 06/04/2026I returned to my structured editor roots a little bit and prototyped a scrollbar that shows the statement structure in method bodies. Also a document outline tree where statement structure is visible for larger methods. This way you can visually distinguish methods by their "shape". 1256
Kirill Osenkov @kirillosenkov.com · 01/04/2026A long time ago I wrote an analyzer to flag usages of async void 2211
Kirill Osenkov @kirillosenkov.com · 21/02/2026PerfView can record all managed exceptions in all processes system-wide thanks to the .NET ETW provider, with callstacks. I built a viewer for these .etl files: 3398
Kirill Osenkov @kirillosenkov.com · 16/12/2025Did you know? You can run csc -langversion:? to see what language versions your C# compiler supports 510710
Kirill Osenkov @kirillosenkov.com · 06/12/2025Ordered my third keyboard from CloudNine: cloudnineergo.com/products/clo... It's split/ergonomic, has mechanical switches and the classical IBM layout (arrow keys + Ins/Del/Home/End/PgUp/PgDn) that is so hard to find. Thinking of ordering a few more in case they stop making it. 5756
Kirill Osenkov @kirillosenkov.com · 02/12/2025MSBuild tip: if you're working with binlogs, set the environment variable MSBuildLogPropertyTracking=15. It enables logging of where each property was initially assigned from during evaluation and lights up more features in the binlog viewer. 2298
Kirill Osenkov @kirillosenkov.com · 18/11/2025This doesn't add as much clarity as I hoped it would: 4180
Kirill Osenkov @kirillosenkov.com · 07/11/2025New in MSBuild Structured Log Viewer: property trail showing reads and writes during evaluation, in order: github.com/KirillOsenko... If you've ever had ordering issues where someone reads your property before you wrote to it, this is the tool for you. 3919
Kirill Osenkov @kirillosenkov.com · 29/09/2025I even see which repository it was (it has been deleted or made private), but there's no way to clear or delete it: 110
Kirill Osenkov @kirillosenkov.com · 26/09/2025I just wrote a Roslyn refactoring! I have to say the Roslyn API is beautiful and I loved the experience. gist.github.com/KirillOsenko... 1110
Kirill Osenkov @kirillosenkov.com · 18/09/2025Phantom notifications bother me way more than they should 180
Kirill Osenkov @kirillosenkov.com · 05/09/2025I just learned that Directory.GetFiles with pattern 1.txt.* matches 1.txt, and it's the OS behavior: 7172
Kirill Osenkov @kirillosenkov.com · 25/08/2025Hmm, I have to confess, this is unexpected for me. Lowercase letters come before uppercase? Intuitively it feels that uppercase should come first? 160
Kirill Osenkov @kirillosenkov.com · 21/08/2025Just saw an Ioniq 5 N on the road for the first time, looks great 240
Kirill Osenkov @kirillosenkov.com · 02/08/2025I was always annoyed by the StringBuilder API Append/AppendLine and that it returns a StringBuilder, so not convertible to an Action<string>. 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. 0100
Kirill Osenkov @kirillosenkov.com · 29/07/2025yes, your problem is Kahua.generators.dll not sure what that is, clearly some third-party thing 200
Kirill Osenkov @kirillosenkov.com · 17/07/2025Happy "Unicode calendar emoji shows the actual current date" day to all those who celebrate: quickinfo.io?calendar 0102
Kirill Osenkov @kirillosenkov.com · 21/06/2025New in MSBuild Structured Log Viewer: Project Reference Graph New tab that shows the project graph layered by project "height". Each project only references projects above it. Clicking a project highlights all directly referenced projects above, and all projects below it that reference this one. 1338
Kirill Osenkov @kirillosenkov.com · 31/05/2025Ran into the situation again where updating VS broke incremental builds, because a different compiler version is now being stamped into the embedded PDB, invalidating all caches and resulting in different PE file bytes from identical sources. Glad I invested in the fancy PE parser and differ! 2214
Kirill Osenkov @kirillosenkov.com · 27/05/2025I wrote a simple tokenizer and translator from Mandarin to English, that translates per-word, as opposed to whole sentences. Turns out both the tokenizer and the dictionary are freely available and open-source, so I just added them to quickinfo.io: quickinfo.io?%E6%88%91%E7... 180
Kirill Osenkov @kirillosenkov.com · 20/05/2025I don't tweet enough about how amazing the Ultra profiler is: github.com/xoofx/ultra 1498
Kirill Osenkov @kirillosenkov.com · 12/05/2025New feature in MSBuild Structured Log Viewer: Target Graph! It parses the preprocessed XML and constructs the target graph where edges are BeforeTargets, DependsOnTargets and AfterTargets. 0256
Kirill Osenkov @kirillosenkov.com · 01/03/2025Protest against Trump and Musk in downtown Bellevue 🇺🇦 2331