learn in public
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.
1044 posts since 2023 624 Problem of the Day write-ups 302 tags
Latest articles
Guides and deep dives on .NET, architecture and the tools I use at work.
-
Building a Personal Finance App, Part 13: GDPR Data Export and Account Deletion
14 minIn 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...
-
Building a Personal Finance App: Series Overview
5 minFor 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...
-
Adding Aspire to an Existing Blazor and Web API Solution: A Step-by-Step Guide
30 minYou 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...
-
Building a Personal Finance App, Part 12: Building with AI Coding Agents
13 minMost of this app was written with AI coding agents at the keyboard and me in the reviewer’s chair. This post is about how that worked: the files the agents read, the s...
-
Building a Personal Finance App, Part 11: Testing and Quality Gates
16 minThis part is about the safety net under the Personal Finance app: the tests, linters, analyzers and CI jobs that have to pass before anything reaches Azure. It is also...
-
Building a Personal Finance App, Part 10: RBAC and Account Isolation
13 minThe app is two services: a Web front end that users sign in to, and an ApiService behind it that owns the data. This part covers how I added roles and an admin dashboa...
Problem of the Day
Daily algorithm practice, one LeetCode problem at a time, with the approach and complexity.
- Copy List with Random Pointer in C#
- Remove N-th Node From End of List in C#
- LeetCode: Reorder List in C#
- Median of Two Sorted Arrays in C#
- Linked List Cycle Detection in C#
- Merging Two Sorted Lists in C#
- Reverse Linked List in C#
- Time Based Key-Value Store in C#
- Search in Rotated Sorted Array in C#
- Find Minimum in Rotated Sorted Array in C#
Topics
The tags I write about most, with how many posts each has.
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.