<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: Longwelwind</title><link>https://news.ycombinator.com/user?id=Longwelwind</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 15 May 2026 17:19:40 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=Longwelwind" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by Longwelwind in "How Claude Code works in large codebases"]]></title><description><![CDATA[
<p>Agents use find+grep because it's available everywhere and without any configuration, but they would still be more efficient with LSP. Once LSPs will be more easily configurable for agents, they will use them.</p>
]]></description><pubDate>Fri, 15 May 2026 07:54:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=48145766</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=48145766</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48145766</guid></item><item><title><![CDATA[New comment by Longwelwind in "Floci – A free, open-source local AWS emulator"]]></title><description><![CDATA[
<p>Those kind of tools are futile endeavors to me.<p>If you want to use that for unit testing, then I think it would be better to mock the calls to AWS services. That way you test only your implementation, in an environment you control.<p>If you want to use that for local development, then I think it would be better to provision a test environment (using Terraform or any other IaC tool). That way you don't run the risk of a bug slipping into prod because the emulator has a different behaviour than the real service.</p>
]]></description><pubDate>Sun, 22 Mar 2026 10:29:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47476094</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=47476094</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47476094</guid></item><item><title><![CDATA[New comment by Longwelwind in "Global warming has accelerated significantly"]]></title><description><![CDATA[
<p>It also doesn't care about arbitrary groupings of humans (a.k.a countries).<p>The fairest system would be for each human being to have an equal amount of pollution they are allowed to emit.</p>
]]></description><pubDate>Fri, 06 Mar 2026 16:10:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47276795</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=47276795</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47276795</guid></item><item><title><![CDATA[New comment by Longwelwind in "Trunk Based Development"]]></title><description><![CDATA[
<p>Trunk-based development fits nicely when you have a single deployment product like a SaaS and you don't need to maintain old versions of your software. You only have one prod environment.<p>If you build a software that you distribute so people can deploy it themselves (a library, a self-hostable solution, ...), then you most likely semantic versioning. In that case, the best model is to use what semantic release offers.</p>
]]></description><pubDate>Sat, 21 Feb 2026 11:07:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=47099639</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=47099639</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47099639</guid></item><item><title><![CDATA[New comment by Longwelwind in "15 years later, Microsoft morged my diagram"]]></title><description><![CDATA[
<p>Using an LLM to generate an image of a diagram is not a good idea, but you can get really good results if you ask it to generate a diagram.io SVG (or a Miro diagram through their MCP).<p>I sometimes ask Claude to read some code and generate a process diagram of it, and it works surprisingly well!</p>
]]></description><pubDate>Wed, 18 Feb 2026 08:43:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=47058758</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=47058758</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47058758</guid></item><item><title><![CDATA[New comment by Longwelwind in "Claude Opus 4.6"]]></title><description><![CDATA[
<p>When doing advanced terminal UI, you might at some point have to layout content inside the terminal. At some point, you might need to update the content of those boxes because the state of the underlying app has changed. At that point, refreshing and diffing can make sense. For some, the way React organizes logic to render and update an UI is nice and can be used in other contexts.</p>
]]></description><pubDate>Thu, 05 Feb 2026 20:19:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=46904633</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=46904633</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46904633</guid></item><item><title><![CDATA[New comment by Longwelwind in "Whistleblower: DOGE Siphoned NLRB Case Data"]]></title><description><![CDATA[
<p>> <i>Berulis found that on March 3 one of the DOGE accounts created an opaque, virtual environment known as a “container,” which can be used to build and run programs or scripts without revealing its activities to the rest of the world. Berulis said the container caught his attention because he polled his colleagues and found none of them had ever used containers within the NLRB network.</i><p>This feels funny to read, for some reasons.</p>
]]></description><pubDate>Tue, 22 Apr 2025 11:26:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=43760889</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=43760889</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43760889</guid></item><item><title><![CDATA[New comment by Longwelwind in "Boardgame.io: an engine for creating turn-based games using JavaScript"]]></title><description><![CDATA[
<p>I don't recommend resolving actions on the server in any situation:<p>For actions that require secret information, you would filter the actions sent to the client of any secret information and make sure the code handling the action can handle both the action and the filtered actins.<p>For actions involving RNG, make all randomness rely on a seed. This seed would be stored server-side and passed along the action when sent to the client. This makes sure the clients can deterministically reproduce the update.</p>
]]></description><pubDate>Sat, 21 Dec 2024 09:22:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=42478488</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=42478488</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42478488</guid></item><item><title><![CDATA[New comment by Longwelwind in "Boardgame.io: an engine for creating turn-based games using JavaScript"]]></title><description><![CDATA[
<p>I had the same issue in AGoT:BG and I solved it by representing the state of the game as a tree. At any point of the game, the current game state is a leaf of the tree.<p>You'd represent this kind of choice as a child node. When the user has made their choice, the code can return to the parent node with the choice being made so it can continue with the next "step" of the game.</p>
]]></description><pubDate>Fri, 20 Dec 2024 17:01:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=42472730</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=42472730</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42472730</guid></item><item><title><![CDATA[New comment by Longwelwind in "Boardgame.io: an engine for creating turn-based games using JavaScript"]]></title><description><![CDATA[
<p>The way I wanted to implement this in my turn-based game engine:<p>If you implement the deterministic update pattern to handle state synchronisation you can add "event" inside the logic that handles updates that pause the processing allowing your animations to be played. In JS, for example:<p><pre><code>    async function handleUpdate(update) {
        if (update.type == "sell-items") {
            this.player.inventory[update.itemId] -= 1;

            await emitEvent("itemSold");

            this.player.money += 10;

            await emitEvent("moneyGain");
        }
    }
</code></pre>
Server-side, "emitEvents" would be a no-op. Everything would resolve synchronously.<p>Client-side, the UI can listen to those events to pause the updating of the game state to see the intermediary state of the game and play animations. When the animation is done, it can resolve the promise, resuming the game updating logic.<p>If an update arrives while an update is being handled, it can be queued so it can be played after the current update finishes.</p>
]]></description><pubDate>Fri, 20 Dec 2024 16:56:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=42472685</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=42472685</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42472685</guid></item><item><title><![CDATA[New comment by Longwelwind in "Forget CDK and AWS's insane costs. Pulumi and DigitalOcean to the rescue"]]></title><description><![CDATA[
<p>I would agree with you, if HCL wasn't a bad language in itself:<p>* You can't make have variables in an import block (for example, to specify a different "id" value for each workspace)<p>* There is no explicit way to make a resource conditional based on variables. Only a hacky way to do that using "count = foo ? 1 : 0"<p>* You can't have variables in the backend configuration, making it impossible to store states in different places depending on the environment.<p>* You can't have variables in the "ignore_changes" field of a resource, making it impossible to dynamically ignore changes for a field (for example, based on module variables).<p>* The VSCode extension for HCL is slow and buggy. Using TS with pulumi or TFCDK makes it possible to use all the existing tooling of the language.</p>
]]></description><pubDate>Thu, 07 Nov 2024 08:54:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=42074914</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=42074914</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42074914</guid></item><item><title><![CDATA[New comment by Longwelwind in "Just use Postgres"]]></title><description><![CDATA[
<p>> It's annoying because, especially with MongoDB, people come into it having been sold on it being a more "flexible" database. Yes, you don't need to give it a schema. Yes, you can just dump untyped JSON into collections. No, this is not a flexible kind of database. It is an efficient one.<p>I really like this sentence because it perfectly encapsulates a mistake that, I think, people do when considering using MongoDB.<p>They believe that the schemaless nature of NoSQL database is an advantage because you don't need to do migrations when adding features (adding columns, splitting them, ...). But that's not why NoSQL database should be used. They are used when you are at a scale when the constraints of a schema become too costly and you want your database to be more efficient.</p>
]]></description><pubDate>Sat, 17 Aug 2024 12:26:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=41274032</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=41274032</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41274032</guid></item><item><title><![CDATA[New comment by Longwelwind in "Show HN: Boardzilla, a framework for making web-based board games"]]></title><description><![CDATA[
<p>You might be interested in the Phase abstraction of my engine.<p>Basically you represent your board game as a tree of phases through which your game progresses in.<p>Each node of your phase tree can contain state. At any point, your game is at leaf of your tree, and the state of the game is composed of all the states of all the nodes from the current leaf-phase to the root of the tree. Each leaf node also have a set of possible inputs describing what possible action players can take to progress into the game. This makes it really easy to handle games that have special "rare" phase that can break the flow of the game (for 7 Wonders: Duel, for example, phases where players must resolve a wonder's effect that asks them to destroy an opponent's card).</p>
]]></description><pubDate>Tue, 30 Jan 2024 08:41:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=39187751</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=39187751</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39187751</guid></item><item><title><![CDATA[New comment by Longwelwind in "Show HN: Boardzilla, a framework for making web-based board games"]]></title><description><![CDATA[
<p>You might be interested by an open-source project I started a few years ago but never really finished: <a href="https://github.com/ravens-engine/core">https://github.com/ravens-engine/core</a><p>I had the idea after developing Swords and Ravens, an online adaption of A Game of Thrones: the Board Game (2nd edition), and realizing that there was a way to make a library to allow people to create board games without having to bother with the network part.<p>I also wrote a blog post about it: <a href="https://longwelwind.net/blog/networking-turn-based-game/" rel="nofollow">https://longwelwind.net/blog/networking-turn-based-game/</a><p>Good luck in your project!</p>
]]></description><pubDate>Tue, 30 Jan 2024 08:24:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=39187636</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=39187636</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39187636</guid></item><item><title><![CDATA[New comment by Longwelwind in "I will always prefer to work from home"]]></title><description><![CDATA[
<p>The second quote was the author's response to the argument that working at the office increases collaboration. My point is that some perceived benefits of WFH can be achieved when working at the office with some communication. That way you can keep the benefits of working from office.</p>
]]></description><pubDate>Sun, 19 Nov 2023 18:40:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=38336114</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=38336114</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38336114</guid></item><item><title><![CDATA[New comment by Longwelwind in "I will always prefer to work from home"]]></title><description><![CDATA[
<p>> Just when I am deep in some twisted train of thought involving a failing JS callback or missing network packets in Kubernetes someone ambles over to my cubicle to ask me some random question about helm that they could have answered in 2 seconds using the search function of their web browser. Train derailed.<p>> Don’t talk to me about collaboration when I sometimes have to turn off slack to be able to hear myself think.<p>Why not communicate to the people that interrupt that they should not come to your cubicle to ask their questions, and should send you a Slack message with their question instead?<p>And then, if you are deep into something and you don't want to be disturbed, you can mute your slack notifications.<p>It feels to me, from the tone of the post, that the writer prefers WFH because it allows them to side-step issues that they could have resolved with communication. Of course this doesn't apply to the practical issues (time lost commuting, ...)</p>
]]></description><pubDate>Sun, 19 Nov 2023 16:53:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=38334532</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=38334532</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38334532</guid></item><item><title><![CDATA[New comment by Longwelwind in "A more mature take on stateless Terraform"]]></title><description><![CDATA[
<p>Why would you want to store the state in Git?<p>This means that if you have a CD pipeline (triggered itself by a commit) that does `terraform deploy`, you'd need to have your CD pipeline do commit _again_ to save the changes to the TF state files.<p>On top of that, you lose the ability to re-run a previous CD pipeline to rollback to a previous version of your infrastructure.<p>The goal of Git is just to store the lifecycle of a piece of software, imo. It's not the reponsibility of the repo to know the state of the deployment.</p>
]]></description><pubDate>Sun, 08 Oct 2023 12:59:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=37810062</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=37810062</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37810062</guid></item><item><title><![CDATA[New comment by Longwelwind in "OpenTelemetry in 2023"]]></title><description><![CDATA[
<p>I think what they means is that if you provisioned your system to receive spans for 5% of non-error requests and a few error requests, if for some random act of god, all the requests yield an error, your span collector will suddenyl receive spans for all requests.</p>
]]></description><pubDate>Mon, 28 Aug 2023 16:52:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=37297051</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=37297051</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37297051</guid></item><item><title><![CDATA[New comment by Longwelwind in "Docs as Code at Linode (2020)"]]></title><description><![CDATA[
<p>Whether it's code or not that is being stored in the VCS is not really what matters. The idea is of X-as-Code is that you treat X in the same way that you treat code (VCSed, tested in a CI pipeline, deployed via an automated CD pipeline and not manually, ...).<p>Debating on the use of the words is wasted energy. Imo, what matters the most are the concepts behind them. The same can be said about the many discussions about server-less architecture.</p>
]]></description><pubDate>Tue, 11 Jul 2023 13:54:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=36681013</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=36681013</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36681013</guid></item><item><title><![CDATA[New comment by Longwelwind in "What is a Vector Database? (2021)"]]></title><description><![CDATA[
<p>AI trend due to ChatGPT.<p>For NLP use-cases, you can use a vector database to index the embeddings of your texts.<p>For exemple, if you implement a document retrieval (a search engine like Google), you train a transformer model that takes a text as input (the content of your document) and produces a vector of number as output (the embedding). You then index your documents by transorming them to their embeddings and storing them inside your vector database.<p>When you want to perform a query using keywords, you transform your keywords into a vector, and then ask your vector database to send you the most similar documents, using a similary function such as the cosine function.</p>
]]></description><pubDate>Fri, 05 May 2023 11:39:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=35827947</link><dc:creator>Longwelwind</dc:creator><comments>https://news.ycombinator.com/item?id=35827947</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35827947</guid></item></channel></rss>