Articles

Running a SPA inside ChatGPT using MCP Apps (Step-by-Step Guide)”

How to run a Single Page Application (SPA) inside ChatGPT using MCP Apps, with a step-by-step guide.

2025: I Shipped 3 OSS Projects — “This Was Actually Fine”

Introduce is-kit, changelog-bot, and divider as my open source projects in 2025.

I Tried Reading React's Source Code and Flow Beat Me Up. So Let's Learn

Flow basics and type checking for reading React source code. Such as mixed, empty, and more.

Generate CHANGELOG.md Automatically

Introduce changelog-bot, a tool that automatically generates a polished CHANGELOG.md from your release notes!

Understanding Variance in TypeScript: Flow, Covariant, Contravariant, Invariant, Bivariant

A deep dive into variance concepts in TypeScript and their practical implications

Escaping the Forest of if Statements🌲

Building Logical Type Guards with is-kit

Compose Type Guards Like Building LEGO Blocks: Reusable Logic with is-kit

Design TypeScript type guards as reusable, composable building blocks using is-kit

Introduce my favorite frontend library: mise / Typedoc / tsd

An introduction to my favorite frontend libraries and their use cases

Introduce is-kit

An introduction to the is-kit library and its features

Technical Debt Grows from “Just for Now” — A Real-World Code Walkthrough

Understanding the fundamentals of technical debt

How Does Technical Debt Pile Up? — Looking at “Just for Now” Examples (Structure Edition)

Analyzing the structure of technical debt in software projects

What the Heck is Technical Debt?

Examining code-level technical debt and its implications

Introducing `divider`

A handy utility to split strings and arrays

FSD * LangChain * Remix * AI portfolio site

How to build a portfolio site using FSD, LangChain, Remix, and AI

FSD (Feature-Sliced Design) overview

An overview of Feature-Sliced Design principles