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.

1047 posts since 2023 624 Problem of the Day write-ups 306 tags

Latest articles

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

  1. How Claude Code Runs Your Tasks: Where the Model Thinks and Where the Code Runs

    11 min
  2. GitHub Actions for Beginners: Your First Workflow, Step by Step

    15 min

    This is a beginner tutorial for GitHub Actions. We start from zero and build a small workflow that tests a .NET project every time you push code. I use short sentences...

  3. Building a CI/CD Pipeline with GitHub Actions: A Step-by-Step Guide from My PersonalFinance Project (.NET 10 + Azure)

    21 min

    I recently set up a full CI/CD pipeline for my PersonalFinance project with help from Claude Code. It works well, but a pipeline you can’t explain is a pipeline you ca...

  4. Building a Personal Finance App, Part 13: GDPR Data Export and Account Deletion

    14 min

    In this final part I add the two privacy features every app holding personal data should have: “download my data” and “delete my account”. They sound like a button eac...

  5. Building a Personal Finance App: Series Overview

    5 min

    For about a month, from late September to late October 2026, I built a Personal Finance app from an empty solution to a deployed, multi-service .NET 10 application. It...

  6. Adding Aspire to an Existing Blazor and Web API Solution: A Step-by-Step Guide

    30 min

    You already have a working solution: a Blazor Web App, a Web API, a Data project with your ApplicationDbContext, and a Models project with your entities. Running it lo...

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.