The Bay Area digital twin runs in a browser now.
Same C++ as the desktop build, compiled to WebAssembly and drawn through WebGPU. Real terrain, procedural buildings, the landmarks, replayed traffic, a sun and moon on the real ephemeris, and a car you can drive. Desktop Chrome for now.
bayarea-web.pages.dev
Getting it there was a data problem, not a graphics problem.
My first measurement, three weeks ago: one view of the Bay meant fetching 1.7 GB and holding 4.2 GB in memory. A browser caps WebAssembly at 4 GB. The port downloaded for five minutes, then crashed before it drew a pixel.
The stack was the easy part. The world logic moved into a GPU-free C++ library both builds share. Shaders are written once in GLSL and translated to WGSL with naga; every one compiles in Chrome, none ported by hand. Loader threads fetch tiles with HTTP Range requests from Cloudflare R2.
The fix was loading by distance, not by region: full detail within a kilometer, major roads out to three, the traffic graph tiled by radius instead of loaded whole. Then zstd on what was left.
Bytes to a settled view: 1.7 GB down to about 170 MB. Memory: 4.2 GB down to about 2 GB.
Then batching: nearly 4,800 requests cut to a third, and the first view on an 80 ms link went from 181 s to 31 s.
And the frame rate: street level went from 4 to 17 fps to 60, standing and driving, on my desktop.
Every release renders 58 golden scenes in Chrome and scores them against the desktop build. The arrival view scores 0.99 on SSIM, an image-similarity measure where 1.0 is identical.
I directed the work. Claude Opus 5.5 did the heavy lifting, from the port to this video.
Map data © OpenStreetMap contributors (ODbL). Land cover: ESA WorldCover 2021 (CC BY 4.0). Terrain: USGS 3DEP and NOAA.
#WebGPU #WebAssembly #cpp #gamedev #OpenStreetMap
zhonghm retweeted
How have software engineering fundamentals changed with agentic coding? Here is our AI Engineering Skills map for software engineering fundamentals.
zhonghm retweeted
Reddit疯传!
最近在 Reddit 的看到一段高赞的“深度思考” Prompt,
我拿 Codex 试了几次,彻底改变了我和 Codex 的沟通方式。
Prompt:
“请先不要回答我的问题。 在给出答案之前,请先完成以下分析:
1、指出我在这个问题中没有明确说出、但已经默认成立的假设;
2、告诉我还缺少哪些关键信息,以及这些信息可能如何改变你的答案;
3、指出人们在处理这类问题时最常犯的一个错误。 然后,请只向我提出一个最关键的问题。这个问题应该能够帮助你理解我的真实目标和具体情况,让最终答案真正对我有用,而不是一份谁都能套用的通用建议。
等我回答以后,你再给出最终输出。
我的问题是:[粘贴你的问题]”



















