Large-scale rendering & performance
Making tens of thousands of elements behave in a browser — 20,000 nodes / 36,610 links at 60 FPS, a self-built SVG graph engine, and replacing whatever stalls at a few thousand items.
Software Engineer · 48 merged open-source PRs · 20,000 nodes at 60 FPS
Renderer-agnostic rubberband selection & multi-drag engine
Grew out of AntV X6 issue #4823: rAF coalescing, drag snapshots, and a preview/commit split. It exists to solve one concrete problem — dragging 100 elements should not drop frames.
Zero-dependency SVG graph-editing kernel
2,108 lines: semantic pins, orthogonal obstacle-avoiding routing, snapping, undo stack, JSON persistence. 49 unit tests plus 2 Chrome E2E suites.
One deterministically generated 20,000-node dataset, rendered with different engines across six interactive demos — all of them run live in the browser, each with a walkthrough video.
MapLibre + deck.gl · 20,000 nodes
Tiled mode delivers the first screen in 1.62 MB across 16 tiles; full-dataset mode pulls 8.86 MB in 53 ms. Both hold 60 FPS.
Three.js · click-to-place decals
Upload a GLB and artwork, click the model surface to place a decal that conforms to the geometry, then drag, resize, rotate and export.
Diagnose deep into pipelines & GPU picking. 20,000 nodes at 60 FPS on real-world datasets.
Solid Java backend (Spring Boot / MyBatis-Plus), modern frontends, containers, and automated CI/CD.
Tool use, streaming, recovery, and long tasks. Systems on real business data, not chatbots.
Component libraries, architectural boundaries, and release pipelines. Built and led 12 engineers.
Explore core capabilities & engineering focus →
Available for remote and contract work — especially large-scale rendering and performance rescue, GIS / digital-twin front ends, and small-to-mid projects where one person should own the whole line.