Sergiy Teplyakov
@steplyakov.bsky.social
Software Engineer at MSFT. Opinions are my own.
Pinned
Sergiy Teplyakov
@steplyakov.bsky.social
· May 22
Reposted by Sergiy Teplyakov
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. :)
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
October 30, 2025 at 4:39 PM
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. :)
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. :)
I want to fail the build on compiler warnings, but keep the diagnostics warnings as warnings.
One option that I've found is to set 'TreatWarningsAsErrors' to true, and set 'CodeAnalysisTreatWarningsAsErrors' to false.
Is there a better way?
/cc: @jaredpar.bsky.social, @terrajobst.net
One option that I've found is to set 'TreatWarningsAsErrors' to true, and set 'CodeAnalysisTreatWarningsAsErrors' to false.
Is there a better way?
/cc: @jaredpar.bsky.social, @terrajobst.net
October 23, 2025 at 1:42 PM
I want to fail the build on compiler warnings, but keep the diagnostics warnings as warnings.
One option that I've found is to set 'TreatWarningsAsErrors' to true, and set 'CodeAnalysisTreatWarningsAsErrors' to false.
Is there a better way?
/cc: @jaredpar.bsky.social, @terrajobst.net
One option that I've found is to set 'TreatWarningsAsErrors' to true, and set 'CodeAnalysisTreatWarningsAsErrors' to false.
Is there a better way?
/cc: @jaredpar.bsky.social, @terrajobst.net
Reposted by Sergiy Teplyakov
New blog post:
In 2021 I found an invisible memory leak in a tool (VS Code) that I have never used. Impossible? Easy:
randomascii.wordpress.com/2025/10/09/f...
In 2021 I found an invisible memory leak in a tool (VS Code) that I have never used. Impossible? Easy:
randomascii.wordpress.com/2025/10/09/f...
Finding a VS Code Memory Leak
In 2021 I found a huge memory leak in VS code, totalling around 64 GB when I first saw it, but with no actual limit on how high it could go. I found this leak despite two obstacles that should have…
randomascii.wordpress.com
October 9, 2025 at 8:27 PM
New blog post:
In 2021 I found an invisible memory leak in a tool (VS Code) that I have never used. Impossible? Easy:
randomascii.wordpress.com/2025/10/09/f...
In 2021 I found an invisible memory leak in a tool (VS Code) that I have never used. Impossible? Easy:
randomascii.wordpress.com/2025/10/09/f...
New video on Dissecting the Code YouTube Channel.
This time, it's about Parallel Stacks - my very favorite
@visualstudio.com
feature that you probably are not using enough!
I can't even count how many times it helped me production incidents investigations!
youtu.be/Z5mN0VCB-KA?...
This time, it's about Parallel Stacks - my very favorite
@visualstudio.com
feature that you probably are not using enough!
I can't even count how many times it helped me production incidents investigations!
youtu.be/Z5mN0VCB-KA?...
Parallel Stacks: The best Visual Studio feature for asynchronous and parallel code
YouTube video by Dissecting The Code
youtu.be
October 8, 2025 at 9:07 PM
New video on Dissecting the Code YouTube Channel.
This time, it's about Parallel Stacks - my very favorite
@visualstudio.com
feature that you probably are not using enough!
I can't even count how many times it helped me production incidents investigations!
youtu.be/Z5mN0VCB-KA?...
This time, it's about Parallel Stacks - my very favorite
@visualstudio.com
feature that you probably are not using enough!
I can't even count how many times it helped me production incidents investigations!
youtu.be/Z5mN0VCB-KA?...
Hey #dotnet people. First milestone for Dissecting the Code YouTube channel - 1k subscribers!
Thanks a lot everyone for your support and warm feedback that I'm getting!
Thanks a lot everyone for your support and warm feedback that I'm getting!
October 6, 2025 at 2:51 PM
Hey #dotnet people. First milestone for Dissecting the Code YouTube channel - 1k subscribers!
Thanks a lot everyone for your support and warm feedback that I'm getting!
Thanks a lot everyone for your support and warm feedback that I'm getting!
After a short break I'm back with the new video on Dissecting the Code YouTube channel.
This time its all about ConfigureAwait, why we ended up having it and how it works under the hood!
#dotnet folks, please share! I'll really appreciate it!
youtu.be/RZsLA_R8i9s?...
This time its all about ConfigureAwait, why we ended up having it and how it works under the hood!
#dotnet folks, please share! I'll really appreciate it!
youtu.be/RZsLA_R8i9s?...
Dissecting ConfigureAwait in C#
YouTube video by Dissecting The Code
youtu.be
October 2, 2025 at 6:40 PM
After a short break I'm back with the new video on Dissecting the Code YouTube channel.
This time its all about ConfigureAwait, why we ended up having it and how it works under the hood!
#dotnet folks, please share! I'll really appreciate it!
youtu.be/RZsLA_R8i9s?...
This time its all about ConfigureAwait, why we ended up having it and how it works under the hood!
#dotnet folks, please share! I'll really appreciate it!
youtu.be/RZsLA_R8i9s?...
Reposted by Sergiy Teplyakov
Egor landed yesterday a great document about C# "Unsafe code best practices" https://github.com/dotnet/docs/blob/main/docs/standard/unsafe-code/best-practices.md 📜
Even if you think you know them, it is a good read as a reminder! 😎
#dotnet #csharp
Even if you think you know them, it is a good read as a reminder! 😎
#dotnet #csharp
docs/docs/standard/unsafe-code/best-practices.md at main · dotnet/docs
This repository contains .NET Documentation. Contribute to dotnet/docs development by creating an account on GitHub.
github.com
September 19, 2025 at 9:24 AM
Egor landed yesterday a great document about C# "Unsafe code best practices" https://github.com/dotnet/docs/blob/main/docs/standard/unsafe-code/best-practices.md 📜
Even if you think you know them, it is a good read as a reminder! 😎
#dotnet #csharp
Even if you think you know them, it is a good read as a reminder! 😎
#dotnet #csharp
Hey #dotnet folks! Please share latest deep-dive video to spread the knowledge about async internals and tips&tricks on debugging .NET code!
Your support means the world!
/cc: @scott.hanselman.com, @ardalis.com, @terrajobst.net, @migueldeicaza.bsky.social and every other member of .net community!
Your support means the world!
/cc: @scott.hanselman.com, @ardalis.com, @terrajobst.net, @migueldeicaza.bsky.social and every other member of .net community!
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?...
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?...
Let's debug async/await in C#!
YouTube video by Dissecting The Code
youtu.be
July 23, 2025 at 9:30 PM
Hey #dotnet folks! Please share latest deep-dive video to spread the knowledge about async internals and tips&tricks on debugging .NET code!
Your support means the world!
/cc: @scott.hanselman.com, @ardalis.com, @terrajobst.net, @migueldeicaza.bsky.social and every other member of .net community!
Your support means the world!
/cc: @scott.hanselman.com, @ardalis.com, @terrajobst.net, @migueldeicaza.bsky.social and every other member of .net community!
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?...
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?...
Let's debug async/await in C#!
YouTube video by Dissecting The Code
youtu.be
July 23, 2025 at 9:20 PM
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?...
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?...
Hey #dotnet community! Please share and let's simplify the way we deal with resources in .NET!
/cc: @migueldeicaza.bsky.social, @scott.hanselman.com and other folks, I love to discuss this topic!
You might disagree with my take! But its time to reconsider some old patterns.
/cc: @migueldeicaza.bsky.social, @scott.hanselman.com and other folks, I love to discuss this topic!
You might disagree with my take! But its time to reconsider some old patterns.
Posted another episode on YouTube: "The way Dispose Pattern Should Be Implemented".
It’s time to reconsider the Dispose Pattern and abandon Dispose(bool disposing) nonsense. Let’s move to a simpler approach and never mix managed and native resources.
youtu.be/E6tQDczhrUM?...
It’s time to reconsider the Dispose Pattern and abandon Dispose(bool disposing) nonsense. Let’s move to a simpler approach and never mix managed and native resources.
youtu.be/E6tQDczhrUM?...
The way Dispose Pattern should be implemented
YouTube video by Dissecting The Code
youtu.be
July 11, 2025 at 5:59 PM
Hey #dotnet community! Please share and let's simplify the way we deal with resources in .NET!
/cc: @migueldeicaza.bsky.social, @scott.hanselman.com and other folks, I love to discuss this topic!
You might disagree with my take! But its time to reconsider some old patterns.
/cc: @migueldeicaza.bsky.social, @scott.hanselman.com and other folks, I love to discuss this topic!
You might disagree with my take! But its time to reconsider some old patterns.
Posted another episode on YouTube: "The way Dispose Pattern Should Be Implemented".
It’s time to reconsider the Dispose Pattern and abandon Dispose(bool disposing) nonsense. Let’s move to a simpler approach and never mix managed and native resources.
youtu.be/E6tQDczhrUM?...
It’s time to reconsider the Dispose Pattern and abandon Dispose(bool disposing) nonsense. Let’s move to a simpler approach and never mix managed and native resources.
youtu.be/E6tQDczhrUM?...
The way Dispose Pattern should be implemented
YouTube video by Dissecting The Code
youtu.be
July 11, 2025 at 5:53 PM
Posted another episode on YouTube: "The way Dispose Pattern Should Be Implemented".
It’s time to reconsider the Dispose Pattern and abandon Dispose(bool disposing) nonsense. Let’s move to a simpler approach and never mix managed and native resources.
youtu.be/E6tQDczhrUM?...
It’s time to reconsider the Dispose Pattern and abandon Dispose(bool disposing) nonsense. Let’s move to a simpler approach and never mix managed and native resources.
youtu.be/E6tQDczhrUM?...
Hey @davidfowl.com, @scott.hanselman.com, @jaredpar.bsky.social, @terrajobst.net and other #dotnet community members!
Could you please share this tweet about how to unlock most of the C# productivity features even targeting .NET Framework or .netstandard2.0.
Appreciate your support!
Could you please share this tweet about how to unlock most of the C# productivity features even targeting .NET Framework or .netstandard2.0.
Appreciate your support!
Posted another episode on YouTube: "Unlocking Modern C# Features Targeting .NET Framework".
Quite a few devs limit themselves with C# 7.3 when they target full framework or .netstandard2.0.
You still can leverage most of the latest C# features in this case.
youtu.be/5eNtdj68qW4?...
Quite a few devs limit themselves with C# 7.3 when they target full framework or .netstandard2.0.
You still can leverage most of the latest C# features in this case.
youtu.be/5eNtdj68qW4?...
Unlocking Modern C# Features Targeting .NET Framework
YouTube video by Dissecting The Code
youtu.be
July 3, 2025 at 9:06 PM
Hey @davidfowl.com, @scott.hanselman.com, @jaredpar.bsky.social, @terrajobst.net and other #dotnet community members!
Could you please share this tweet about how to unlock most of the C# productivity features even targeting .NET Framework or .netstandard2.0.
Appreciate your support!
Could you please share this tweet about how to unlock most of the C# productivity features even targeting .NET Framework or .netstandard2.0.
Appreciate your support!
Posted another episode on YouTube: "Unlocking Modern C# Features Targeting .NET Framework".
Quite a few devs limit themselves with C# 7.3 when they target full framework or .netstandard2.0.
You still can leverage most of the latest C# features in this case.
youtu.be/5eNtdj68qW4?...
Quite a few devs limit themselves with C# 7.3 when they target full framework or .netstandard2.0.
You still can leverage most of the latest C# features in this case.
youtu.be/5eNtdj68qW4?...
Unlocking Modern C# Features Targeting .NET Framework
YouTube video by Dissecting The Code
youtu.be
July 3, 2025 at 9:03 PM
Posted another episode on YouTube: "Unlocking Modern C# Features Targeting .NET Framework".
Quite a few devs limit themselves with C# 7.3 when they target full framework or .netstandard2.0.
You still can leverage most of the latest C# features in this case.
youtu.be/5eNtdj68qW4?...
Quite a few devs limit themselves with C# 7.3 when they target full framework or .netstandard2.0.
You still can leverage most of the latest C# features in this case.
youtu.be/5eNtdj68qW4?...
Reposted by Sergiy Teplyakov
How to Find Public Symbols That Can Be Internal Using Roslyn #dotnet #roslyn https://www.meziantou.net/how-to-find-public-symbols-that-can-be-internal-using-roslyn.htm?utm_medium=social&utm_source=bluesky
How to Find Public Symbols That Can Be Internal Using Roslyn - Gérald Barré
Learn how to use Roslyn to analyze your .NET solution and identify public symbols that are only used internally and can be safely changed to internal.
www.meziantou.net
July 1, 2025 at 2:35 PM
How to Find Public Symbols That Can Be Internal Using Roslyn #dotnet #roslyn https://www.meziantou.net/how-to-find-public-symbols-that-can-be-internal-using-roslyn.htm?utm_medium=social&utm_source=bluesky
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!
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!
June 26, 2025 at 7:57 PM
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!
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!
Reposted by Sergiy Teplyakov
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.
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.
June 21, 2025 at 2:33 AM
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.
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.
Reposted by Sergiy Teplyakov
Reposted by Sergiy Teplyakov
Name all the ways this line can cause a NullReferenceException:
if (x == null)
{
...
}
if (x == null)
{
...
}
June 20, 2025 at 8:53 PM
Name all the ways this line can cause a NullReferenceException:
if (x == null)
{
...
}
if (x == null)
{
...
}
Reposted by Sergiy Teplyakov
Hey friends, my YouTube channel is 18 YEARS OLD today! Please like and subscribe ;) youtube.com/shanselman
Scott Hanselman
I'm a teacher. I speak all over to whomever will listen. I have written code that you've likely used. I've been blogging for over a decade and podcasting for about half that. I speak, code, write, emp...
youtube.com
June 20, 2025 at 3:21 PM
Hey friends, my YouTube channel is 18 YEARS OLD today! Please like and subscribe ;) youtube.com/shanselman
Hey #dotnet people!
Just published another episode on Dissecting the Code YouTube channel: “Shooting yourself in a foot with the finalizers”.
Crashes due to NullReferenceException, race conditions, constructors that finish before the finalizers, and all the fun stuff!
youtu.be/Wh2Zl1d57lo?...
Just published another episode on Dissecting the Code YouTube channel: “Shooting yourself in a foot with the finalizers”.
Crashes due to NullReferenceException, race conditions, constructors that finish before the finalizers, and all the fun stuff!
youtu.be/Wh2Zl1d57lo?...
Finalizers are trickier than you might think
YouTube video by Dissecting The Code
youtu.be
June 20, 2025 at 4:00 AM
Hey #dotnet people!
Just published another episode on Dissecting the Code YouTube channel: “Shooting yourself in a foot with the finalizers”.
Crashes due to NullReferenceException, race conditions, constructors that finish before the finalizers, and all the fun stuff!
youtu.be/Wh2Zl1d57lo?...
Just published another episode on Dissecting the Code YouTube channel: “Shooting yourself in a foot with the finalizers”.
Crashes due to NullReferenceException, race conditions, constructors that finish before the finalizers, and all the fun stuff!
youtu.be/Wh2Zl1d57lo?...
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.
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.
June 19, 2025 at 9:03 PM
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.
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.
New video: Managing Native Resources in .NET.
Have you ever think, why we’re not using a struct for managing resources? It should be more efficient, right? Icover what will happen and why we should use the building blocks like SafeHandle.
#dotnet
youtu.be/DUgtC0OZMtA
Have you ever think, why we’re not using a struct for managing resources? It should be more efficient, right? Icover what will happen and why we should use the building blocks like SafeHandle.
#dotnet
youtu.be/DUgtC0OZMtA
Managing Native Resource in NET
YouTube video by Dissecting The Code
youtu.be
June 12, 2025 at 3:41 PM
New video: Managing Native Resources in .NET.
Have you ever think, why we’re not using a struct for managing resources? It should be more efficient, right? Icover what will happen and why we should use the building blocks like SafeHandle.
#dotnet
youtu.be/DUgtC0OZMtA
Have you ever think, why we’re not using a struct for managing resources? It should be more efficient, right? Icover what will happen and why we should use the building blocks like SafeHandle.
#dotnet
youtu.be/DUgtC0OZMtA
Hey #dotnet folks.
Do you ever used (or needed) a debug version of a nuget package? The package has only the managed library, no native code, no executables.
Is there a use case for that?
Do you ever used (or needed) a debug version of a nuget package? The package has only the managed library, no native code, no executables.
Is there a use case for that?
June 9, 2025 at 4:49 PM
Hey #dotnet folks.
Do you ever used (or needed) a debug version of a nuget package? The package has only the managed library, no native code, no executables.
Is there a use case for that?
Do you ever used (or needed) a debug version of a nuget package? The package has only the managed library, no native code, no executables.
Is there a use case for that?
Hey #dotnet and other folks.
Another quite exciting news: I've been mentoring colleges at MSFT for quite some time and now I'm available as a mentor at mentor.sh platform.
Here is my profile: mentor.sh/mentors/Serg...
Will be happy to be your mentor and learn from each other!
Another quite exciting news: I've been mentoring colleges at MSFT for quite some time and now I'm available as a mentor at mentor.sh platform.
Here is my profile: mentor.sh/mentors/Serg...
Will be happy to be your mentor and learn from each other!
./mentor.sh - Mentorship platform
Empowering mentors and mentees to build meaningful relationships and accelerate personal and professional growth.
mentor.sh
June 9, 2025 at 4:46 PM
Hey #dotnet and other folks.
Another quite exciting news: I've been mentoring colleges at MSFT for quite some time and now I'm available as a mentor at mentor.sh platform.
Here is my profile: mentor.sh/mentors/Serg...
Will be happy to be your mentor and learn from each other!
Another quite exciting news: I've been mentoring colleges at MSFT for quite some time and now I'm available as a mentor at mentor.sh platform.
Here is my profile: mentor.sh/mentors/Serg...
Will be happy to be your mentor and learn from each other!
Hey #dotnet people:)
Just published another episode on Dissecting the Code YouTube channel - "Can Tiered Compilation Cause Memory Leaks in .NET".
This video is about a change in behavior between full framework on .net 9 in respect to GCInfo and how it affect memory usage.
Just published another episode on Dissecting the Code YouTube channel - "Can Tiered Compilation Cause Memory Leaks in .NET".
This video is about a change in behavior between full framework on .net 9 in respect to GCInfo and how it affect memory usage.
June 6, 2025 at 9:13 PM
Hey #dotnet people:)
Just published another episode on Dissecting the Code YouTube channel - "Can Tiered Compilation Cause Memory Leaks in .NET".
This video is about a change in behavior between full framework on .net 9 in respect to GCInfo and how it affect memory usage.
Just published another episode on Dissecting the Code YouTube channel - "Can Tiered Compilation Cause Memory Leaks in .NET".
This video is about a change in behavior between full framework on .net 9 in respect to GCInfo and how it affect memory usage.