<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>Fri, 10 Apr 2026 09:28:09 +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 "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><item><title><![CDATA[New comment by onsclom in "What dif­fer­enti­ates front-end frame­works"]]></title><description><![CDATA[
<p>> I wonder if it's possible to put this code in the backend in C++, what do you think?<p>Yeahh, looks like you'd have to connect to all these signals and be able to access sizing/position from C++. Not sure how possible this is, you probably know better than me.</p>
]]></description><pubDate>Mon, 31 Jul 2023 02:50:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=36938290</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=36938290</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36938290</guid></item><item><title><![CDATA[New comment by onsclom in "What dif­fer­enti­ates front-end frame­works"]]></title><description><![CDATA[
<p>Whoops, I should have been more clear. When I said "It's all very unoptimized and dynamic QMLScript" I meant just the file `Flex.qml`. I'm sure the Qt C++ bindings are fast and great, but check out the `updatePositions` function in `Flex.qml`[1]. This unoptimized and dynamic QMLScript gets ran every time a flex item's width, height, or children change. I imagine if that QMLScript was given types then at least that QMLScript compiler could generate some C++ for it, but right now there are no types so I doubt there is any efficient C++ generated for this script.<p>On the web it's common to animate the size of flexbox items with CSS animations. These animations are entirely implemented by the browser, and I imagine much of it is even GPU accelerated. No JavaScript is executed for this on the browser. But with this library, you would be running the `Flex.qml`'s `updatePositions` function every frame of the animation. Isn't that wasteful when compared to how flexbox works in the browser? It seems like a browser would be much faster at computing layout for flexbox elements than this, especially when that flexbox's size is being animated with CSS animations.<p>[1] <a href="https://github.com/tripolskypetr/qml-flexbox/blob/master/qml/Flex.qml#L271">https://github.com/tripolskypetr/qml-flexbox/blob/master/qml...</a></p>
]]></description><pubDate>Fri, 28 Jul 2023 23:08:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=36914605</link><dc:creator>onsclom</dc:creator><comments>https://news.ycombinator.com/item?id=36914605</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36914605</guid></item></channel></rss>