Archives
All the articles I've archived.
Why React Compiler Can Render Stale Data in MobX observer Components
A minimal reproduction of React Compiler caching stale JSX around MobX observer, why interior mutability conflicts with memoization, and the practical fixes available today.
Web Gaussian Splatting: Cesium 3D Tiles vs. SparkJS 2.0
Updated:A technical comparison of Cesium's standards-based 3D Tiles pipeline and SparkJS 2.0's renderer-native, paged Gaussian-splat runtime.
How Mapbox Renders 3D Interchanges
Updated:An analysis of Mapbox's lane-level HD road data, elevation features, styles, and rendering pipeline for 3D interchanges.
Advanced Thread Safety in C++
Updated:Advanced techniques for protecting shared state in C++, including mutex discipline, deadlock avoidance, and thread-safe object design.
Polygon Triangulation on a Sphere vs. a Plane
Updated:Why planar triangulation distorts polygons on a globe, and how subdivision and spherical interpolation improve the result.
Interoperability Between C++ and JavaScript in V8
Updated:How V8 maps values, exposes C++ variables, functions, and classes to JavaScript, and invokes JavaScript callbacks from C++.
How Assuming the Earth Is Flat Speeds Up deck.gl Rendering
Updated:How deck.gl balances Web Mercator projection cost and WebGL floating-point precision with an automatic offset coordinate system.
WebAssembly Study Notes
Updated:Notes on WebAssembly modules, memory, JavaScript interoperability, toolchains, performance, and browser execution.
Quadtrees and Collision Detection
Updated:Designing a quadtree for spatial partitioning, range queries, and collision detection, with implementation tradeoffs in C++.
Client-side Raster Tile Reprojection
Updated:Reprojecting non-Mercator WMTS raster tiles in the browser for display on a Web Mercator map.
Understanding C++ Rvalue References and std::move
Updated:How rvalue references, std::move, and move semantics improve resource management in modern C++.
Implementing Polygon Gradient Fills
Updated:Using a polygon straight skeleton to implement an inward glow or shadow similar to QGIS shapeburst fills.
Implementing Building Shadows in Mapbox
Updated:Implementing time- and location-based building shadows in Mapbox by adapting Threebox to Mapbox GL JS v2.
C++20: Building a Thread Pool with Coroutines
Updated:A minimal thread-pool implementation based on cppcoro concepts, designed to explain the essential mechanics of C++20 coroutines.
C++ Concurrency Study Notes
Updated:A reading outline covering C++ concurrency, synchronization, atomics, parallel algorithms, and concurrent data structures.
Understanding std::string_view
Updated:Using std::string_view for allocation-free string access while avoiding lifetime, ownership, and null-termination pitfalls.
Using an eSIM in Mainland China
Updated:A practical record of purchasing, activating, and testing a travel eSIM in mainland China.
The Lifecycle of a Mapbox Vector Tile
Updated:How Mapbox GL JS requests, parses, prepares, uploads, and renders vector tiles across the event loop, workers, and render loop.
Poor pigs
Updated:Aren't we all just poor pigs? Touch too many sensitive words, and you might not survive either.
Publishing Mapbox-Compatible Vector Tiles with GeoServer
Updated:A practical walkthrough for publishing a Mapbox-compatible vector tile service with GeoServer.
Spatial Search Algorithms: Querying Millions of Points Instantly
Updated:A practical comparison of spatial indexing strategies for efficient point and geometry queries at large scale.
Running a Web Crawler on a Cloud Server
Updated:Notes on moving a multithreaded web-crawling and upload workload to Google Cloud Platform.
Visualizing Train Operations at Shanghai Hongqiao Railway Station
Updated:A map-based visualization of individual trains, cars, platforms, and routes around Shanghai Hongqiao Railway Station.
Notes on Natural Language Processing
Updated:Books and an outline of notes on natural language processing.
What Calculator Percent Keys Teach Us
Updated:Why pocket calculators interpret percentages unexpectedly, and how to model that behavior with the shunting-yard algorithm and RPN.
Designing a Cultural Revolution-era Map
Updated:A cartographic experiment combining historical Beijing street names with period-inspired typography, colors, symbols, and map styling.
Algorithm Notes: Trees
Updated:Tree construction, traversal, search, binary search trees, tries, and common interview problem patterns.
Algorithm Notes: Dynamic Programming
Updated:Recognizing dynamic-programming problems and deriving optimal subproblems, state transitions, and common solution patterns.
Algorithm Notes: Arrays
Updated:Patterns for array problems, including numeric operations, two pointers, traversal, and in-place transformations.
Generating 3D Road Interchanges from OSM Data
Updated:Using OSM layer ordering, slope constraints, and linear programming to infer road elevations for 3D interchanges.
Word Segmentation Algorithms and a Simple Implementation, Part 2
Updated:A closer look at the algorithms behind Jieba and other Chinese word-segmentation systems.
Word Segmentation Algorithms and a Simple Implementation, Part 1
Updated:How MMSEG and Jieba combine dictionaries, DAGs, dynamic programming, and HMMs for Chinese word segmentation.
SEO, Search Engines, and Search Quality Rating
Updated:Designing an effective relevance-labeling platform and what its workflow reveals about search ranking and quality evaluation.
Information Retrieval Study Notes
Updated:An outline of core information-retrieval concepts, from inverted indexes and ranking to clustering and evaluation.
SEO Study Notes
Updated:Notes on crawling, indexing, ranking signals, site structure, content quality, and search-engine optimization.
A Simple Way to Correct Raster Map Offsets in China
Updated:Approximately correcting GCJ-offset raster tiles by transforming the requested tile extent before retrieving imagery.
Implementing Kriging Interpolation, Part 2: C# Implementation
Updated:Implementing kriging interpolation in C# with Math.NET, semivariogram fitting, and matrix operations.
Implementing Kriging Interpolation, Part 1: The Mathematics
Updated:The semivariogram, model fitting, covariance matrix, and weighted estimation behind ordinary kriging.
Beyond Coordinates











