<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: teamchong</title><link>https://news.ycombinator.com/user?id=teamchong</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 09 May 2026 03:12:54 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=teamchong" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by teamchong in "Show HN: Prompt-to-Excalidraw demo with Gemma 4 E2B in the browser (3.1GB)"]]></title><description><![CDATA[
<p>sorry it’s not working for you. I built this as a personal project for self-learning, but I plan to take a look at this issue next weekend. you can check out a video demo of it here: <a href="https://github.com/user-attachments/assets/71ae6e5c-a5ec-4d09-9de5-cf67ff42edfb" rel="nofollow">https://github.com/user-attachments/assets/71ae6e5c-a5ec-4d0...</a></p>
]]></description><pubDate>Sun, 19 Apr 2026 15:46:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=47825148</link><dc:creator>teamchong</dc:creator><comments>https://news.ycombinator.com/item?id=47825148</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47825148</guid></item><item><title><![CDATA[New comment by teamchong in "Show HN: Prompt-to-Excalidraw demo with Gemma 4 E2B in the browser (3.1GB)"]]></title><description><![CDATA[
<p>firefox has webgpu already, but the subgroups extension isn't in yet. every matmul / softmax kernel here leans on subgroupShuffleXor for reductions, that's the blocker. same reason mlc webllm and friends don't run on firefox either. once mozilla ships it this should work</p>
]]></description><pubDate>Sun, 19 Apr 2026 14:47:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=47824715</link><dc:creator>teamchong</dc:creator><comments>https://news.ycombinator.com/item?id=47824715</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47824715</guid></item><item><title><![CDATA[Show HN: Prompt-to-Excalidraw demo with Gemma 4 E2B in the browser (3.1GB)]]></title><description><![CDATA[
<p>Article URL: <a href="https://teamchong.github.io/turboquant-wasm/draw.html">https://teamchong.github.io/turboquant-wasm/draw.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47823460">https://news.ycombinator.com/item?id=47823460</a></p>
<p>Points: 163</p>
<p># Comments: 62</p>
]]></description><pubDate>Sun, 19 Apr 2026 11:17:27 +0000</pubDate><link>https://teamchong.github.io/turboquant-wasm/draw.html</link><dc:creator>teamchong</dc:creator><comments>https://news.ycombinator.com/item?id=47823460</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47823460</guid></item><item><title><![CDATA[New comment by teamchong in "Show HN: TurboQuant-WASM – Google's vector quantization in the browser"]]></title><description><![CDATA[
<p>I made some adjustment, can you try again? Is it faster now?<p><a href="https://teamchong.github.io/turboquant-wasm/search.html" rel="nofollow">https://teamchong.github.io/turboquant-wasm/search.html</a></p>
]]></description><pubDate>Wed, 08 Apr 2026 07:09:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=47686425</link><dc:creator>teamchong</dc:creator><comments>https://news.ycombinator.com/item?id=47686425</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47686425</guid></item><item><title><![CDATA[New comment by teamchong in "Show HN: TurboQuant-WASM – Google's vector quantization in the browser"]]></title><description><![CDATA[
<p>you’re right that 32f is faster on raw query time, quantization adds extra step. main benefit on download size since gzip won’t help much, which matters most in browser contexts</p>
]]></description><pubDate>Sun, 05 Apr 2026 00:16:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47644881</link><dc:creator>teamchong</dc:creator><comments>https://news.ycombinator.com/item?id=47644881</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47644881</guid></item><item><title><![CDATA[Show HN: TurboQuant-WASM – Google's vector quantization in the browser]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/teamchong/turboquant-wasm">https://github.com/teamchong/turboquant-wasm</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47639567">https://news.ycombinator.com/item?id=47639567</a></p>
<p>Points: 165</p>
<p># Comments: 7</p>
]]></description><pubDate>Sat, 04 Apr 2026 14:53:16 +0000</pubDate><link>https://github.com/teamchong/turboquant-wasm</link><dc:creator>teamchong</dc:creator><comments>https://news.ycombinator.com/item?id=47639567</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47639567</guid></item><item><title><![CDATA[New comment by teamchong in "Show HN: VectorJSON – O(n) streaming parser to handle LLM JSON outputs"]]></title><description><![CDATA[
<p>I built this after hitting GC stalls parsing streaming tool calls in my AI agent.
LLM outputs are getting large — code edits, file writes, 50-200KB JSON payloads.<p>Every AI SDK I looked at (Vercel, Anthropic, TanStack, OpenClaw) does `buffer += chunk; JSON.parse(buffer)` on every token.
That's O(n²) — a 100KB tool call arrives in ~8000 chunks, and each chunk re-parses the entire accumulated buffer from scratch.
The cumulative parse time adds up to 13.4 seconds for the Anthropic SDK.
Each intermediate buffer string and parsed object becomes garbage immediately,
thousands of short-lived allocations that put constant pressure on the GC.<p>VectorJSON scans only the new bytes on each chunk. O(n) total — same payload, 6.6ms.
Parsing happens in WASM linear memory, so no JS objects are created until you access a field.<p>Built on zimdjson (Zig port of simdjson by @travisstaloch) compiled to WASM.
Fields materialize lazily through a Proxy — if you only read 3 fields from a 100KB payload, the other 97% never touches the JS heap.
Deep comparison runs entirely in WASM memory — 2-4× faster than recursive JS deepEqual with 24× less heap pressure.<p>Not a replacement for JSON.parse — for single-shot full materialization, JSON.parse is faster (it's optimized C++ in V8).
VectorJSON is built for streaming, partial access, and deep comparison.</p>
]]></description><pubDate>Wed, 18 Feb 2026 21:53:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47066973</link><dc:creator>teamchong</dc:creator><comments>https://news.ycombinator.com/item?id=47066973</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47066973</guid></item><item><title><![CDATA[Show HN: VectorJSON – O(n) streaming parser to handle LLM JSON outputs]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/teamchong/vectorjson">https://github.com/teamchong/vectorjson</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47066966">https://news.ycombinator.com/item?id=47066966</a></p>
<p>Points: 1</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 18 Feb 2026 21:52:58 +0000</pubDate><link>https://github.com/teamchong/vectorjson</link><dc:creator>teamchong</dc:creator><comments>https://news.ycombinator.com/item?id=47066966</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47066966</guid></item></channel></rss>