Sergiy Teplyakov

@steplyakov.bsky.social

Software Engineer at MSFT. Opinions are my own.

Do you know that .NET 10 massively reduces the overhead of using any built-in collections via interfaces (yes, not only for arrays)? Iterating a list via IList<T>, or dictionary via 'IDictionary<K,V>', etc., now has almost zero abstraction penalty!

Bild

I'm writing another book, and the first few chapters are available through Manning Early Access now! For 50% off! hubs.la/Q03Q9PGP0 More details, and the story of how I came to write it, are on my blog at ericlippert.com/2025/10/30/i... It feels great to be writing again after a long break. :)

Fabulous Adventures in Data Structures and Algorithms - Eric Lippert

Author Eric Lippert introduces fabulous solutions using uncommon algorithms and data structures. There’s a lot more to algorithms than the useful-but-boring recipes you recite for every interview. Th...

hubs.la

Hey #dotnet people! Just published another episode on Dissecting the Code channel: How Google Broken the Internet and Why It Took 3 Hours to Recover? It's about null pointer bugs, retry logic and a bit of .NET Aspire used for visualizing the metrics. Please share and sub!

Bild

New 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.

many rows of multiple rectangles per row, each rectangle is the project name, some rectangles are bigger and bluer (they are referenced more). One rectangle is selected and green, it has outgoing arrows above it that point to other rectangles, with purple border. Those are the referenced projects. Arrows also go down, to rectangles with green borders. Those are projects that reference the selected one.

TIL about ValueTask.Preserve() helper method that returns a value task that may be used at any point in the future. ValueTasks are tricky and they can't be stored in a field, or awaited multiple times. Preserve "fixes" that by allocating Task<T> under the hood.

Bild