<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: linkdd</title><link>https://news.ycombinator.com/user?id=linkdd</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 21 Apr 2026 08:48:55 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=linkdd" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[FlowG – Road to 1.0]]></title><description><![CDATA[
<p>Article URL: <a href="https://link-society.github.io/flowg/blog/road-to-stable">https://link-society.github.io/flowg/blog/road-to-stable</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47602544">https://news.ycombinator.com/item?id=47602544</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 01 Apr 2026 15:53:18 +0000</pubDate><link>https://link-society.github.io/flowg/blog/road-to-stable</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=47602544</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47602544</guid></item><item><title><![CDATA[Blessed.rs – Recommended Crate Directory]]></title><description><![CDATA[
<p>Article URL: <a href="https://blessed.rs/crates">https://blessed.rs/crates</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47484500">https://news.ycombinator.com/item?id=47484500</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 23 Mar 2026 01:42:06 +0000</pubDate><link>https://blessed.rs/crates</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=47484500</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47484500</guid></item><item><title><![CDATA[New comment by linkdd in "Building a Procedural Hex Map with Wave Function Collapse"]]></title><description><![CDATA[
<p>This is not Wave Function Collapse. This is a constraint solver.<p>The goal of the original algorithm ( <a href="https://github.com/mxgmn/WaveFunctionCollapse" rel="nofollow">https://github.com/mxgmn/WaveFunctionCollapse</a> ) is to infer the constraints from a sample, and then run a constraint solver.<p>Hard-coding the constraints skips the whole point of the algorithm (which is also badly named by the way).</p>
]]></description><pubDate>Tue, 10 Mar 2026 01:17:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=47318031</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=47318031</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47318031</guid></item><item><title><![CDATA[SDL_mixer 3.2.0 (stable) is out]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/libsdl-org/SDL_mixer/releases/tag/release-3.2.0">https://github.com/libsdl-org/SDL_mixer/releases/tag/release-3.2.0</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47316694">https://news.ycombinator.com/item?id=47316694</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 09 Mar 2026 22:38:17 +0000</pubDate><link>https://github.com/libsdl-org/SDL_mixer/releases/tag/release-3.2.0</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=47316694</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47316694</guid></item><item><title><![CDATA[MuJS: Lightweight JavaScript interpreter for embedding in other software]]></title><description><![CDATA[
<p>Article URL: <a href="https://mujs.com">https://mujs.com</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47292927">https://news.ycombinator.com/item?id=47292927</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 08 Mar 2026 00:18:29 +0000</pubDate><link>https://mujs.com</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=47292927</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47292927</guid></item><item><title><![CDATA[New comment by linkdd in "An Interactive Intro to CRDTs (2023)"]]></title><description><![CDATA[
<p>Last-Write-Win CRDTs are nice, but I wish the article talked about where CRDT really shine, which is when the state truly converge in a non-destructive way, for example:<p>1) Counters<p>While not really useful, they demonstrate this well:<p><pre><code>  - mutations are +n and -n
  - their order do not matter
  - converging the state is a matter of applying the operations of remote peers locally
</code></pre>
2) Append-only data structures<p>Useful for accounting, or replication of time-series/logs with no master/slave relationship between nodes (where writes would be accepted only on a "master" node).<p><pre><code>  - the only mutation is "append"
  - converging the state is applying the peers operations then sorting by timestamp
</code></pre>
EDIT: add more<p>3) Multi Value registers (and maps)<p>Similar to Last-Write-Win registers (and maps), but all writes are kept, the value becomes a set of concurrent values.<p>4) Many more...<p>Each is useful for specific use cases. And since not everybody is making collaborative tools, but many are working on distributed systems, I think it's worth it to mention this.<p>On another note, the article talks about state based CRDTs, where you need to share the whole state. In the examples I gave above, they are operation based CRDTs, where you need to share the operations done on the state and recompute it when needed.<p>For example, in the Elixir ecosystem, we have Horde ( <a href="https://hexdocs.pm/horde/readme.html" rel="nofollow">https://hexdocs.pm/horde/readme.html</a> ) which allows distributing a worker pool over multiple nodes, it's backed by DeltaCrdt ( <a href="https://hexdocs.pm/delta_crdt/DeltaCrdt.html" rel="nofollow">https://hexdocs.pm/delta_crdt/DeltaCrdt.html</a> ).<p>Delta-CRDTs are an optimization over state based CRDTs where you share state diffs instead of the whole state (described in this paper: <a href="https://arxiv.org/pdf/1603.01529" rel="nofollow">https://arxiv.org/pdf/1603.01529</a> ).</p>
]]></description><pubDate>Tue, 03 Mar 2026 21:35:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=47239380</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=47239380</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47239380</guid></item><item><title><![CDATA[New comment by linkdd in "Process-Based Concurrency: Why Beam and OTP Keep Being Right"]]></title><description><![CDATA[
<p>You would have a process handling the calls to the postgres.<p>That process has as local state the database connection and receive messages that are translated to SQL queries, here 2 scenarios are possible:<p>1) The query is invalid (you are trying to inert a row with a missing foreign key, or wrong data type).
In that case, you send the error back to the caller.<p>2) There is a network problem between your application and the database (might be temporary).<p>You just let the process crash (local state is lost), the supervisor restarts it, the restarted process tries to connect back to the database (new local state). If it still fails it will crash again and the supervisor might decide to notify other parts of the application of the problem. If the network issue was temporary, the restart succeeds.<p>Before crashing, you notified the caller that there was a problem and he should retry.<p>Now, for the caller. You could start a transient process in a dynamic supervisor for every query. That would handle the retry mechanism. The "querier process" would quit only on success and send the result back as a message. When receiving an error, it would crash and then be restarted by the supervisor for the retry.<p>There are plenty of other solutions, and in Elixir you have "ecto" that handles all of this for you. "ecto" is not an ORM, but rather a data-mapper: <a href="https://github.com/elixir-ecto/ecto" rel="nofollow">https://github.com/elixir-ecto/ecto</a></p>
]]></description><pubDate>Mon, 02 Mar 2026 15:59:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47219653</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=47219653</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47219653</guid></item><item><title><![CDATA[Process-Based Concurrency: Why Beam and OTP Keep Being Right]]></title><description><![CDATA[
<p>Article URL: <a href="https://variantsystems.io/blog/beam-otp-process-concurrency">https://variantsystems.io/blog/beam-otp-process-concurrency</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47214063">https://news.ycombinator.com/item?id=47214063</a></p>
<p>Points: 112</p>
<p># Comments: 55</p>
]]></description><pubDate>Mon, 02 Mar 2026 05:01:08 +0000</pubDate><link>https://variantsystems.io/blog/beam-otp-process-concurrency</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=47214063</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47214063</guid></item><item><title><![CDATA[New comment by linkdd in "Show HN: Peekl – A modern alternative to Ansible and Puppet"]]></title><description><![CDATA[
<p>YAML is actually tricky, especially with multiline strings and space handling.<p>I do find HCL to be simpler. But for things like Ansible, I'd rather have a real programming language, like PyInfra does (which I never got to try yet unfortunately).</p>
]]></description><pubDate>Fri, 27 Feb 2026 01:32:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47175131</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=47175131</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47175131</guid></item><item><title><![CDATA[New comment by linkdd in "Show HN: Peekl – A modern alternative to Ansible and Puppet"]]></title><description><![CDATA[
<p>Why YAML ? :(</p>
]]></description><pubDate>Tue, 24 Feb 2026 01:39:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=47131766</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=47131766</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47131766</guid></item><item><title><![CDATA[JIT: A header-only, cross-platform JIT compiler library in C]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/abdimoallim/jit">https://github.com/abdimoallim/jit</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47116988">https://news.ycombinator.com/item?id=47116988</a></p>
<p>Points: 20</p>
<p># Comments: 1</p>
]]></description><pubDate>Mon, 23 Feb 2026 01:38:35 +0000</pubDate><link>https://github.com/abdimoallim/jit</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=47116988</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47116988</guid></item><item><title><![CDATA[Simulating fusion reactors in C++ [video]]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=IaiYxnLrs_8">https://www.youtube.com/watch?v=IaiYxnLrs_8</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47116258">https://news.ycombinator.com/item?id=47116258</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 23 Feb 2026 00:05:09 +0000</pubDate><link>https://www.youtube.com/watch?v=IaiYxnLrs_8</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=47116258</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47116258</guid></item><item><title><![CDATA[Goto Considered Awesome [video]]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=1UKVEUGEk6Y">https://www.youtube.com/watch?v=1UKVEUGEk6Y</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46930478">https://news.ycombinator.com/item?id=46930478</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 08 Feb 2026 01:40:07 +0000</pubDate><link>https://www.youtube.com/watch?v=1UKVEUGEk6Y</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=46930478</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46930478</guid></item><item><title><![CDATA[Avoiding Modern C++ – Anton Mikhailov [video]]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=ShSGHb65f3M">https://www.youtube.com/watch?v=ShSGHb65f3M</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46930097">https://news.ycombinator.com/item?id=46930097</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 08 Feb 2026 00:49:21 +0000</pubDate><link>https://www.youtube.com/watch?v=ShSGHb65f3M</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=46930097</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46930097</guid></item><item><title><![CDATA[OSMC 2025 – Easy logging refinement with FlowG [video]]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=zrvc6hPmNYI">https://www.youtube.com/watch?v=zrvc6hPmNYI</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46875678">https://news.ycombinator.com/item?id=46875678</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 03 Feb 2026 19:08:05 +0000</pubDate><link>https://www.youtube.com/watch?v=zrvc6hPmNYI</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=46875678</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46875678</guid></item><item><title><![CDATA[CG/SQL – SQL dialect compiler to C for sqlite3 mimicking stored procedures]]></title><description><![CDATA[
<p>Article URL: <a href="https://ricomariani.github.io/CG-SQL-author/">https://ricomariani.github.io/CG-SQL-author/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46844511">https://news.ycombinator.com/item?id=46844511</a></p>
<p>Points: 24</p>
<p># Comments: 9</p>
]]></description><pubDate>Sun, 01 Feb 2026 08:25:30 +0000</pubDate><link>https://ricomariani.github.io/CG-SQL-author/</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=46844511</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46844511</guid></item><item><title><![CDATA[Scrollbars in Scrollbars]]></title><description><![CDATA[
<p>Article URL: <a href="https://matoseb.com/scrollbars-scrollbars/">https://matoseb.com/scrollbars-scrollbars/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46617566">https://news.ycombinator.com/item?id=46617566</a></p>
<p>Points: 4</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 14 Jan 2026 15:56:40 +0000</pubDate><link>https://matoseb.com/scrollbars-scrollbars/</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=46617566</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46617566</guid></item><item><title><![CDATA[New comment by linkdd in "MIT Non-AI License"]]></title><description><![CDATA[
<p>You can't say you love opensource and be mad that users are using the freedom you granted.<p>OpenSource projects are not becoming free training material for AI, AI companies are using a freedom OpenSource projects granted.<p>The claim that AI can build far superior software is dubious and I don't believe it one second. And even if it were true, that does not change anything.<p>With or without AI, permissive licenses (MIT, BSD, ISC, ...) always allowed the code to be used and redistributed in non opensource software. If you don't want that, use the GPL or a derive. If you don't believe that the GPL would be enforceable on the derivative works produced by AI, don't release your code as opensource.<p>OpenSource is essentially an ideology, that software should be free of use, and transparent, and freely shareable, without restriction. If you don't buy into that ideology, it's fine, but don't claim to love OpenSource when you don't. Just like a person who eats fish should not claim to be vegan.<p>AI will not be the end of OpenSource, firstly because it's a dead-end technology, it has already peaked years ago and is becoming worse with each new model. It does not have the ability to build complex software beyond a CRUD app (would you use a kernel that was entirely vibecoded? would you trust it the way you trust the Linux kernel?). Secondly, because OpenSource does not discriminate who gets to enjoy the freedom you granted.<p>You decided to "work for free" when you decided to distribute as OpenSource. If you don't want to work for free, maybe OpenSource is not for you.</p>
]]></description><pubDate>Sun, 11 Jan 2026 17:55:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=46577850</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=46577850</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46577850</guid></item><item><title><![CDATA[New comment by linkdd in "MIT Non-AI License"]]></title><description><![CDATA[
<p>> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software<p>Key words are:<p><pre><code>  - permission is [...] granted
  - free of charge
  - without restriction
  - use, copy, …
</code></pre>
Then:<p>> may not be used for the purposes of […]<p>The license contradicts itself.<p>> Don't we have to ask for permission before feeding someone's years of work into an AI?<p>That's the point of an OpenSource license, to give permission.<p>This kind of stuff makes me think very few people really understand what OpenSource is about. The very same people who will fallback to licenses such as the BSL as soon as people/companies will use the permissions that they gave, and then will complain that "no one wants to pay for the thing i did for free and nobody asked for".</p>
]]></description><pubDate>Sat, 10 Jan 2026 19:45:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=46569235</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=46569235</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46569235</guid></item><item><title><![CDATA[Pingfs: Stores your data in ICMP ping packets (2020)]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/yarrick/pingfs">https://github.com/yarrick/pingfs</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46260901">https://news.ycombinator.com/item?id=46260901</a></p>
<p>Points: 78</p>
<p># Comments: 26</p>
]]></description><pubDate>Sun, 14 Dec 2025 05:09:26 +0000</pubDate><link>https://github.com/yarrick/pingfs</link><dc:creator>linkdd</dc:creator><comments>https://news.ycombinator.com/item?id=46260901</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46260901</guid></item></channel></rss>