~/talk

Tricky JS and WebGL practices to achieve the best performance on mobile

slides:none on file

An interactive stadium seat map renders ~100k seats and pivots from server-side Electron/OpenGL on EC2 with GPU and Rust (fails after 15 minutes when virtual display sleeps) to client WebGL using pixijs then a hand-rolled renderer. Coordinate packing and run-length encoding shrinks gzip payloads ~17×. Pixi sprite creation costs ~400 ms (1.5 s on a high-end Android), 200 MB RAM and 100% CPU; the custom engine drops CPU to <1% and memory by half. Clicks use color-encoded offscreen IDs with readPixels and lazy per-seat object creation.

AI-written summary · about

  1. 0:00Introduction
  2. 1:12Speaker and context
  3. 2:17Large stadium seats challenges
  4. 3:04Server-side rendering first
  5. 4:10OpenGL on server side
  6. 6:01Mobile performance data rethink
  7. 7:08Run-length encoding coordinates
  8. 8:52PixiJS performance issues
  9. 10:47Custom WebGL solution
  10. 11:57Initial WebGL demo
  11. 13:30Memory and CPU profiling
  12. 14:33Custom WebGL results
  13. 16:04Click detection with pixels
  14. 17:31Off-screen click detection
  15. 19:42Large datasets handling
  16. 23:14Computing values on access
  17. 26:23Q&A
  18. 36:29Closing
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.