Recent posts
Refactor code ES5 sang ES6+: destructuring, spread, Map/Set
Refactor code ES5 sang ES6+ từng bước: let/const, destructuring, spread, optional chaining ?., nullish coalescing ??.
WeakMap vs WeakSet: tránh memory leak khi cache theo object
So sánh Map/Set với WeakMap/WeakSet: weak reference, GC reachability và cách tránh memory leak khi cache theo object.
React Fiber Và Thuật Toán Diffing: Vì Sao State Bị Reset?
Thuật toán diffing React và kiến trúc Fiber: heuristic O(n), key, state theo vị trí, double buffering và work loop.
WebGL, Three.js và GLSL shader: từ cơ bản đến nâng cao
Hướng dẫn WebGL, Three.js và GLSL shader từ cơ bản đến nâng cao: pipeline GPU, ShaderMaterial, uniform, varying, mix
Promise.all, race, any, allSettled: chọn đúng combinator
So sánh Promise.all, allSettled, race, any: khi nào reject, shape kết quả và cách chọn đúng combinator cho code async.
Tự viết lại Pick, Omit, Partial: hiểu utility types từ gốc
Tự viết lại Pick, Omit, Partial và utility type built-in bằng mapped type, conditional type và infer trong TypeScript
REST, WebSocket hay SSE? Chọn protocol cho app TypeScript
Chọn REST, SSE hay WebSocket cho app TypeScript: fetch đúng cách, API client type-safe, so sánh và bảo mật realtime.
TypeScript compile chậm? Tối ưu tsc và type-level code
Tối ưu tốc độ compile TypeScript: đo tsc bằng diagnostics, incremental, project references và giảm chi phí type-level
Lịch Sử React: Từ Version 15 Đến React 19 Qua Từng Cột Mốc
Dòng thời gian React từ version 15 tới 19: Fiber, Hooks, Concurrent, Actions — mỗi cột mốc ra đời để giải quyết gì.
Class TypeScript: private, #field, abstract và implements
Class TypeScript: private vs #field, parameter properties, abstract class, implements interface và composition thực tế