<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: onsclom</title><link>https://news.ycombinator.com/user?id=onsclom</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 18 Jun 2026 13:05:52 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=onsclom" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by onsclom in "MicroUI – A tiny, portable, immediate-mode UI library written in ANSI C"]]></title><description><![CDATA[
<p>Ooh interesting. What is your machine and browser? On chrome with my m1 macbook it takes less than 1ms to compute and render each frame, but I am noticing some things I can optimize from the performance flame graph! I will say, I find chrome to be way more efficient for ctx2d things than firefox or safari.</p>
]]></description><pubDate>Thu, 18 Jun 2026 00:42:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=48579057</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=48579057</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48579057</guid></item><item><title><![CDATA[New comment by onsclom in "MicroUI – A tiny, portable, immediate-mode UI library written in ANSI C"]]></title><description><![CDATA[
<p>I made my own WASM demo @ <a href="https://microui-wasm.vercel.app/" rel="nofollow">https://microui-wasm.vercel.app/</a> and it's only 14.6 kB compressed!<p>Will share source code if someone is interested, but key bits:<p>- had a small JS glue layer using CanvasRenderingContext2D to render<p>- made a `wasm32-freestanding` build to lower the wasm bundle size, which meant shimming the bits of the libc microui uses</p>
]]></description><pubDate>Thu, 18 Jun 2026 00:26:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48578914</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=48578914</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48578914</guid></item><item><title><![CDATA[New comment by onsclom in "LÖVE: 2D Game Framework for Lua"]]></title><description><![CDATA[
<p>I don't necessarily hate Lua, but I prefer C and Raylib for game dev. Lua is garbage collected, dynamically typed, strays far from standard syntax patterns, and has less existing tooling than C.<p>I see why people might hate Lua. Especially for game dev!</p>
]]></description><pubDate>Sun, 05 Apr 2026 22:43:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=47654705</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=47654705</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47654705</guid></item><item><title><![CDATA[New comment by onsclom in "Play chess via Slack DMs or SMS using an ASCII board"]]></title><description><![CDATA[
<p>made a non-ascii of this where nice og images of the board are generated!<p><a href="https://correspondence-chess-production.up.railway.app/" rel="nofollow">https://correspondence-chess-production.up.railway.app/</a></p>
]]></description><pubDate>Sun, 18 Jan 2026 23:27:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=46673280</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=46673280</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46673280</guid></item><item><title><![CDATA[New comment by onsclom in "Play chess via Slack DMs or SMS using an ASCII board"]]></title><description><![CDATA[
<p>this is the way to go!<p>making a move should automatically copy the new url to your clipboard. you can still keep the ascii charm by server side rendering the ascii chess board as an og description.</p>
]]></description><pubDate>Sun, 18 Jan 2026 18:42:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=46670802</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=46670802</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46670802</guid></item><item><title><![CDATA[New comment by onsclom in "Proposal: JavaScript Structs"]]></title><description><![CDATA[
<p>`const foo = function() {}`</p>
]]></description><pubDate>Fri, 11 Oct 2024 03:24:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=41805705</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=41805705</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41805705</guid></item><item><title><![CDATA[New comment by onsclom in "Zed, a collaborative code editor, is now open source"]]></title><description><![CDATA[
<p>I'm guessing you don't consider VSCode an IDE? I'm curious, what features do you use in IDEs that are missing in VSCode?</p>
]]></description><pubDate>Thu, 25 Jan 2024 01:22:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=39125018</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=39125018</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39125018</guid></item><item><title><![CDATA[New comment by onsclom in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>These are great points! Thanks for the super thoughtful reply. I'm actually sold.<p>1. It's really nice that it's so easy to make a `createSignal`<p>2. I didn't realize that in Solid you had to update all the usage sites too, so now I'd rather stick to the Svelte usage. Nested reactivity is not as effortless as I thought in Solid.<p><pre><code>  get done() { return done },
  set done(value) { done = value },
  get text() { return text },
  set text(value) { text = value }
</code></pre>
Looks a bit boilerplate-y maybe, but keeping your preoptimized call sites is totally worth it.<p>This might be common enough that some syntax sugar might be worth it?<p>The short hand for:<p><pre><code>  todos = [...todos, {
    get done() { return done },
    set done(value) { done = value },
    get text() { return text },
    set text(value) { text = value }
  }];
</code></pre>
Could be:<p><pre><code>  todos = [...todos, {
    $done,
    $set
  }];</code></pre></p>
]]></description><pubDate>Fri, 22 Sep 2023 01:42:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=37606883</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=37606883</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37606883</guid></item><item><title><![CDATA[New comment by onsclom in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>Whoops, I missed that. Good catch! I'm not sure how tln's problem is happening then.</p>
]]></description><pubDate>Thu, 21 Sep 2023 04:41:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=37593284</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=37593284</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37593284</guid></item><item><title><![CDATA[New comment by onsclom in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>Implicit reactive `let` statements make the code harder to understand for humans AND the compiler. This new explicit state pattern even simplifies designing. Now reactive state can work outside of components and across files as you would expect. It was tricky in all three ways.</p>
]]></description><pubDate>Wed, 20 Sep 2023 21:01:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=37590125</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=37590125</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37590125</guid></item><item><title><![CDATA[New comment by onsclom in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>Make sure you opt in to use runes!<p>You can do it project wide or per component: <a href="https://svelte-5-preview.vercel.app/docs/runes" rel="nofollow noreferrer">https://svelte-5-preview.vercel.app/docs/runes</a></p>
]]></description><pubDate>Wed, 20 Sep 2023 20:52:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=37590018</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=37590018</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37590018</guid></item><item><title><![CDATA[New comment by onsclom in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>Instead of finding reactive dependencies at compile time, `$effect` and `$derived` automatically track dependencies at runtime. This might feel like it would result in a performance decrease, but it is what SolidJS has been doing. And SolidJS is #1 in most performance benchmarks!</p>
]]></description><pubDate>Wed, 20 Sep 2023 20:37:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=37589828</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=37589828</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37589828</guid></item><item><title><![CDATA[New comment by onsclom in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>Fair points, though React has hugely complex runtime magic. SolidJS's compiler magic is just as simple while also having much a simpler runtime.</p>
]]></description><pubDate>Wed, 20 Sep 2023 20:33:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=37589777</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=37589777</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37589777</guid></item><item><title><![CDATA[New comment by onsclom in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>To be fair, assignments to variables still update the state of your component. `count += 1` will still update the state of your component. I think what you meant is that you now need to explicitly declare `count` as state. Personally, I think the magic of Svelte is that assignment part. And now the magic of Svelte works across files and even inside regular `.ts` and `.js` files!</p>
]]></description><pubDate>Wed, 20 Sep 2023 20:22:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=37589660</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=37589660</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37589660</guid></item><item><title><![CDATA[New comment by onsclom in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>> The $effect runes makes people think we are going down the React useEffect route... but I didn't see a dependency array attached there waiting to obliterate performance?<p>This is exactly what SolidJS already does, and SolidJS is #1 in almost all performance benchmarks.</p>
]]></description><pubDate>Wed, 20 Sep 2023 20:18:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=37589600</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=37589600</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37589600</guid></item><item><title><![CDATA[New comment by onsclom in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>If you created `anotherThing` as nested state, then just the children!<p>See this for a real example: <a href="https://svelte-5-preview.vercel.app/docs/fine-grained-reactivity" rel="nofollow noreferrer">https://svelte-5-preview.vercel.app/docs/fine-grained-reacti...</a><p>Here is the same thing in SolidJS with more explanation: <a href="https://www.solidjs.com/tutorial/stores_nested_reactivity" rel="nofollow noreferrer">https://www.solidjs.com/tutorial/stores_nested_reactivity</a></p>
]]></description><pubDate>Wed, 20 Sep 2023 20:13:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=37589536</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=37589536</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37589536</guid></item><item><title><![CDATA[New comment by onsclom in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>Most of this I really love. One thing seems a bit strange though...<p>Let's compare Svelte's and Solid's approach to nested reactivity. Both of them implement the same nested reactivity todo example:<p>Svelte: <a href="https://svelte-5-preview.vercel.app/docs/fine-grained-reactivity" rel="nofollow noreferrer">https://svelte-5-preview.vercel.app/docs/fine-grained-reacti...</a><p>Solid: <a href="https://www.solidjs.com/tutorial/stores_nested_reactivity?solved" rel="nofollow noreferrer">https://www.solidjs.com/tutorial/stores_nested_reactivity?so...</a><p>In Solid, converting something to use nested reactivity is one step. In Svelte, it is two steps. And that second step is really verbose and annoying:<p><pre><code>  todos = [...todos, {
    get done() { return done },
    set done(value) { done = value },
    get text() { return text },
    set text(value) { text = value }
   }];
</code></pre>
Solid makes read and write segregation very simple and obvious. You don't need to manually make all these getters and setters.<p>It is nice that runes allows nested reactivity in Svelte, but it feels nicer to use in Solid.</p>
]]></description><pubDate>Wed, 20 Sep 2023 18:55:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=37588415</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=37588415</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37588415</guid></item><item><title><![CDATA[New comment by onsclom in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>This example is a bit strange to me. I wonder if `$effect` will actually replace all usage of `onMount` and `onDestroy` for Svelte. In Solid you could totally do these things with `useEffect` too, but they chose to keep `onMount` and `onDestroy` (which they call `onCleanup`) to make this kind of thing more simple.<p>Example: <a href="https://www.solidjs.com/examples/counter" rel="nofollow noreferrer">https://www.solidjs.com/examples/counter</a><p>`onMount` and `onDestroy` feel like really useful, dependable callbacks. `$effect` is scary because if you add a reference to state in it, you can't depend on it being called like `onMount`.</p>
]]></description><pubDate>Wed, 20 Sep 2023 18:28:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=37587942</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=37587942</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37587942</guid></item><item><title><![CDATA[New comment by onsclom in "Svelte 5: Runes"]]></title><description><![CDATA[
<p>I snooped around Rich's GitHub history and found he's working on esrap[1], a package to convert an AST into code. It uses Bun for development and testing!<p>Crazy theory: esrap will be part of a transpiler that converts Svelte 4 code to Svelte 5 code. I'm not sure if that's actually the case or if it's even technically possible. But it would be really cool!<p>[1] <a href="https://github.com/Rich-Harris/esrap">https://github.com/Rich-Harris/esrap</a></p>
]]></description><pubDate>Wed, 20 Sep 2023 17:32:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=37587085</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=37587085</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37587085</guid></item><item><title><![CDATA[Immediate Feedback in Programming]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.reillywood.com/blog/inventing-on-principle/">https://www.reillywood.com/blog/inventing-on-principle/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36961331">https://news.ycombinator.com/item?id=36961331</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 01 Aug 2023 19:29:46 +0000</pubDate><link>https://www.reillywood.com/blog/inventing-on-principle/</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=36961331</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36961331</guid></item></channel></rss>