learn in public

Insertion sort: 0 comparisons, 0 swaps

I'm Thomas Ngo, a software engineer in Stanton, California. I write down what I learn about algorithms, C# and .NET, and building real software, so I understand it better and you can learn it faster.

Articles explain a topic end to end. Problem of the Day posts are my daily algorithm practice, one LeetCode problem at a time.

1029 posts since 2023 624 Problem of the Day write-ups 272 tags

Latest articles

Guides and deep dives on .NET, architecture and the tools I use at work.

  1. User Impersonation for QA & Dev in Windows Auth with ASP.NET Core MVC (.NET 10)

    8 min

    Learn how to build a safe, production-grade user impersonation mechanism in ASP.NET Core MVC (.NET 10) to streamline QA and local development for Windows Authenticatio...

  2. A Simple Guide to the Decorator Pattern: User Impersonation in ASP.NET Core MVC (.NET 10)

    5 min

    Design patterns often feel intimidating when buried under enterprise boilerplate or third-party libraries. However, the Decorator Pattern is simple, elegant, and can b...

  3. How to Create a Custom .NET 10 MVC & API Solution Template

    40 min

    When starting a new project or onboarding team members, setting up the same repetitive multi-project architecture by hand (creating a modern solution file, adding an M...

  4. Windows Task Scheduler

    1 min

    Sometimes, we need to run daily task or schedule a process to run on a window server. This can be tedious and time consuming. So, it’s better to find a way to automate...

  5. Select and SelectMany in C# LINQ with .NET 10

    7 min

    Select and SelectMany are two of the most useful LINQ operators. Both transform data, but they produce different shapes:

  6. Understanding GroupBy, ToLookup, and Join in LINQ with C# and .NET 10

    9 min

    LINQ gives C# developers a concise way to filter, transform, group, and combine data. Three operators that often look similar but solve different problems are GroupBy,...

See every post in the Journal

Problem of the Day

Daily algorithm practice, one LeetCode problem at a time, with the approach and complexity.

  1. Copy List with Random Pointer in C#
  2. Remove N-th Node From End of List in C#
  3. LeetCode: Reorder List in C#
  4. Median of Two Sorted Arrays in C#
  5. Linked List Cycle Detection in C#
  6. Merging Two Sorted Lists in C#
  7. Reverse Linked List in C#
  8. Time Based Key-Value Store in C#
  9. Search in Rotated Sorted Array in C#
  10. Find Minimum in Rotated Sorted Array in C#
See all 624 problems

Topics

The tags I write about most, with how many posts each has.

Browse all tags

About

Who's writing this.

I'm Thomas Ngo, a software engineer in Stanton, California. I build reliable, maintainable software and write down what I learn along the way.