Blog

A collection of articles on development, design, and ideas.

Filter Posts

Categories

Building a Blog AI Assistant with TanStack AI
New

Building a Blog AI Assistant with TanStack AI

Using RADIO Pattern to design and implement an AI assistant with TanStack AI, Gemini, and SSE Streaming

AITanStackNext.jsReactElysiaSystem Design
2025 Recap: Year Four
New

2025 Recap: Year Four

A personal retrospective on career growth, milestones, and finding balance.

CareerRecapPersonal
Storybook CSF Factories

Storybook CSF Factories

研究 Autodocs 自動化時發現的新東西,但 Angular 專案先別急著跳進去

StorybookCSFAngularTypeScriptTesting
重新認識 Angular - 效能優化與部署

重新認識 Angular - 效能優化與部署

Angular 進階主題:Styling、@defer、Zoneless、Testing 與 Build 最佳實踐

AngularReactSignalsTypeScript
重新認識 Angular - 路由、資料與表單

重新認識 Angular - 路由、資料與表單

Angular 實戰筆記,涵蓋 DI、Routing、Data Fetching 與 Forms

AngularReactSignalsTypeScript
重新認識 Angular - Signals 響應式狀態管理

重新認識 Angular - Signals 響應式狀態管理

深入理解 Angular Signals 與 SignalStore

AngularReactSignalsSignalStoreTypeScript
Autocomplete System Design

Autocomplete System Design

使用 RADIO Pattern 設計一個現代化的 Autocomplete 元件,涵蓋需求分析、架構設計、資料模型、API 介面與效能優化

ReactTypeScriptInterviewSystem DesignRADIO Pattern
RADIO Pattern

RADIO Pattern

前端系統設計的結構化思考框架,從需求分析到優化的完整方法論

ArchitectureSystem DesignDesign PatternsBest Practices
重新認識 Angular - 專案建立與 Component

重新認識 Angular - 專案建立與 Component

Angular 20 學習筆記,從專案建立到 Component 基礎

AngularReactSignalsTypeScript
Blog View Count Implementation

Blog View Count Implementation

在部落格加個瀏覽計數應該很簡單吧?結果比我想的複雜一點

API DesignRedis
JSDC 2025|Modern Monorepo Toolchain

JSDC 2025|Modern Monorepo Toolchain

From tool selection to real-world implementation, how Monorepo becomes core infrastructure for modern frontend teams.

MonorepoJSDCNxTurborepopnpmConference
Hierarchical Checkbox Selection

Hierarchical Checkbox Selection

Implement a Hierarchical Checkbox Selection System

InterviewJavaScriptReactUI ComponentsState Management
Event Bubbling

Event Bubbling

Understanding Event Bubbling in DOM

InterviewJavaScriptDOMEvent Handling
Functional Programming Concepts - Curry、Compose、Pipe

Functional Programming Concepts - Curry、Compose、Pipe

探討函數式編程中的 Curry、Compose、Pipe 的實作與應用

JavaScriptFunctional ProgrammingTypeScriptSoftware Design
Pipe Function Implementation

Pipe Function Implementation

In this blog I will Share a solution to the Pipe Function Implementation problem.

InterviewJavaScriptFunctional ProgrammingTypeScript
Retry Promise

Retry Promise

In this blog I will share a solution to the Retry Promise interview problem.

InterviewJavaScriptPromiseError HandlingRecursion
Countdown Timer

Countdown Timer

In this blog I will share a solution to the Countdown Timer interview problem.

InterviewJavaScriptReactTimerHooks
Grid Template:最直覺的 CMS Layout 解決方案

Grid Template:最直覺的 CMS Layout 解決方案

使用 Grid Template Areas 打造直覺且易維護的 CMS 版面配置

CSSGridLayoutWeb Design

Two Sum

Find two numbers that add up to target using Hash Map - O(n) time complexity

AlgorithmHash MapEasy

Climbing Stairs

Dynamic programming solution using Fibonacci sequence pattern

LeetCodeAlgorithmDynamic ProgrammingFibonacciEasy

Ransom Note

Check if ransom note can be constructed from magazine using Hash Map

LeetCodeAlgorithmHash MapStringEasy

Longest Palindrome

Calculate longest palindrome length using Set for character pairing

LeetCodeAlgorithmHash MapStringGreedyEasy

Add Binary

Add two binary strings and return their sum in binary format

LeetCodeAlgorithmStringMathBit ManipulationEasy

Insert Interval

Insert a new interval into sorted non-overlapping intervals and merge if necessary

LeetCodeAlgorithmArrayGreedyIntervalsMedium

01 Matrix

Calculate distance to nearest 0 for each cell using multi-source BFS

LeetCodeAlgorithmBFSMatrixDynamic ProgrammingMedium

Maximum Depth of Binary Tree

Find the maximum depth of a binary tree using recursive traversal

LeetCodeAlgorithmBinary TreeDFSRecursionEasy

Reverse Linked List

Reverse a singly linked list using iterative approach with pointer manipulation

LeetCodeAlgorithmLinked ListRecursionEasy

Contains Duplicate

Detect if array contains duplicate elements using Set or Map

LeetCodeAlgorithmArrayHash MapEasy

Majority Element

Find the element that appears more than n/2 times using sorting approach

LeetCodeAlgorithmArrayHash MapSortingEasy

Maximum Subarray

Find the contiguous subarray with maximum sum using Kadane's algorithm

LeetCodeAlgorithmArrayDynamic ProgrammingKadane's AlgorithmMedium

Middle of the Linked List

Find the middle node of a linked list using two-pointer technique

LeetCodeAlgorithmLinked ListTwo PointersEasy

Diameter of Binary Tree

Find the longest path between any two nodes in a binary tree

LeetCodeAlgorithmBinary TreeDFSRecursionEasy
JavaScript 原生時間日期處理庫 - Temporal

JavaScript 原生時間日期處理庫 - Temporal

介紹 Temporal 的時間日期處理

JavaScriptTemporal APIDate & TimeWeb API
用 ni 管理所有 Node 套件

用 ni 管理所有 Node 套件

學習如何安裝與使用 ni,統一處理多種包管理器需求,專注於開發本身

Node.jsPackage ManagerDeveloper ToolsProductivity

Easy 232. Implement Queue using Stacks

In this blog I will share a solution to the Implement Queue using Stacks problem.

LeetCodeAlgorithmStackQueueDesignEasy

Easy 110. Balanced Binary Tree

In this blog I will share a solution to the Balanced Binary Tree problem.

LeetCodeAlgorithmBinary TreeDFSRecursionEasy

Medium 235. Lowest Common Ancestor of a Binary Search Tree

In this blog I will share a solution to the Lowest Common Ancestor of a Binary Search Tree problem.

LeetCodeAlgorithmBinary Search TreeBinary TreeDFSMedium

Easy 125. Valid Palindrome

In this blog I will share a solution to the Valid Palindrome problem.

LeetCodeAlgorithmStringTwo PointersEasy

Easy 21 - Merge Two Sorted Lists

In this blog I will share a solution to the Merge Two Sorted Lists problem.

LeetCodeAlgorithmLinked ListRecursionSortingEasy

Easy 02 - Valid Parentheses

In this blog I will share a solution to the Valid Parentheses problem.

LeetCodeAlgorithmStackStringEasy
網頁的效能指標及優化

網頁的效能指標及優化

Performance、Metrics

PerformanceWeb VitalsOptimizationSEO
Blog – Michael Lo