<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: spiffyk</title><link>https://news.ycombinator.com/user?id=spiffyk</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 13 Jun 2026 07:23:18 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=spiffyk" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by spiffyk in "Every Byte Matters"]]></title><description><![CDATA[
<p>A cache line is simply the unit of data a CPU cache works with (generally 64 bytes, because someone somewhere has probably determined that that is the best line size for general use), much like there are units of data like bytes (8 bits nowadays, but there have been weird ones historically), pages (varies between hardware as well, and may be OS-configurable), etc.<p>As TFA mentions, a CPU does some predictions about what cache lines to prefetch, e.g. when you do sequential reads. Moreover, the x86_64 instruction set provides a prefetch instruction through which you are able to give the CPU a hint <i>"hey, I'm gonna be using this soon, prepare accordingly, pretty please"</i>.<p>Still, the utility of prefetching is diminished if you only use a single byte from each cache line, because the mechanism generally depends on you doing other work <i>while the next cache line is being fetched</i>. So really the best case scenario is to take as much time as possible to work with what is already fetched, so that there is time for the next unit of data to be fetched in the meantime.</p>
]]></description><pubDate>Wed, 03 Jun 2026 13:36:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48383876</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=48383876</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48383876</guid></item><item><title><![CDATA[Contributor Poker and Zig's AI Ban]]></title><description><![CDATA[
<p>Article URL: <a href="https://kristoff.it/blog/contributor-poker-and-ai/">https://kristoff.it/blog/contributor-poker-and-ai/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47948736">https://news.ycombinator.com/item?id=47948736</a></p>
<p>Points: 10</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 29 Apr 2026 14:11:44 +0000</pubDate><link>https://kristoff.it/blog/contributor-poker-and-ai/</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47948736</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47948736</guid></item><item><title><![CDATA[New comment by spiffyk in "South Korea police arrest man for posting AI photo of runaway wolf"]]></title><description><![CDATA[
<p>Pretty sure if you let only a handful of individuals from an almost-extinct species roam around freely in an uncontrolled environment, chances are pretty high something is going to kill them off before they reproduce, hence why they are almost-extinct.<p>The zoo provides a controlled environment needed to restore the species.<p>EDIT: typo/word ordering</p>
]]></description><pubDate>Fri, 24 Apr 2026 10:16:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47888147</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47888147</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47888147</guid></item><item><title><![CDATA[New comment by spiffyk in "Writing a C Compiler, in Zig (2025)"]]></title><description><![CDATA[
<p>I expressly said "not be so tightly coupled to LLVM" because I know they're <i>not</i> planning on dropping it altogether. But it is the plan for LLVM and Clang not to be <i>compiled into the Zig binary</i> anymore, because that has proven to be <i>very</i> burdensome. Instead, the plan seems to be to "side-car" it <i>somehow</i>.</p>
]]></description><pubDate>Fri, 24 Apr 2026 10:06:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47888062</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47888062</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47888062</guid></item><item><title><![CDATA[New comment by spiffyk in "Writing a C Compiler, in Zig (2025)"]]></title><description><![CDATA[
<p>There is actually another C compiler written in Zig, Aro[1], which Zig started using since 0.16 for its TranslateC module.<p>[1]: <a href="https://github.com/Vexu/arocc" rel="nofollow">https://github.com/Vexu/arocc</a></p>
]]></description><pubDate>Thu, 23 Apr 2026 12:03:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47874741</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47874741</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47874741</guid></item><item><title><![CDATA[New comment by spiffyk in "Writing a C Compiler, in Zig (2025)"]]></title><description><![CDATA[
<p>Zig actually bundles LLVM's Clang, which it uses to compile C with the `zig cc` command. But the long term goal seems to not be so tightly coupled to LLVM, so I'm expecting that to move elsewhere.  They still do some clever stuff around compiler-rt, allowing it to be better at cross-compilation than raw Clang, but the bulk of it is mostly just Clang.<p>There is also another C compiler written in Zig, Aro[1], which seems to be much more complete than TFA.  Zig started using that as a library for its TranslateC functionality (for translating C headers into Zig, not whole programs) in 0.16.<p>[1]: <a href="https://github.com/Vexu/arocc" rel="nofollow">https://github.com/Vexu/arocc</a></p>
]]></description><pubDate>Thu, 23 Apr 2026 12:01:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47874726</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47874726</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47874726</guid></item><item><title><![CDATA[High-Quality Chaos]]></title><description><![CDATA[
<p>Article URL: <a href="https://daniel.haxx.se/blog/2026/04/22/high-quality-chaos/">https://daniel.haxx.se/blog/2026/04/22/high-quality-chaos/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47873889">https://news.ycombinator.com/item?id=47873889</a></p>
<p>Points: 5</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 23 Apr 2026 09:57:51 +0000</pubDate><link>https://daniel.haxx.se/blog/2026/04/22/high-quality-chaos/</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47873889</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47873889</guid></item><item><title><![CDATA[New comment by spiffyk in "Zig 0.16.0 Release Notes"]]></title><description><![CDATA[
<p>How is it a hack? I mean, you may not like the fact that Zig does not provide syntax sugar for interfaces, but how exactly do you think they are implemented in languages that do?</p>
]]></description><pubDate>Wed, 15 Apr 2026 09:20:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=47776632</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47776632</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47776632</guid></item><item><title><![CDATA[New comment by spiffyk in "A Faster Alternative to Jq"]]></title><description><![CDATA[
<p>It does not need to be an explicit check (i.e. a condition checking that your index is not out of bounds). You may structure your code in such a way that it becomes a mathematical impossibility to exceed the bounds. For a dumb trivial example, you have an array of 500 bytes and are accessing it with an 8-bit unsigned index - there's no explicit bounds check, but you can never exceed its bounds, because the index may only be 0-255.<p>Of course this is a very artificial and almost nonsensical example, but that is how you optimize bounds checks away - you just make it impossible for the bounds to be exceeded through means other than explicitly checking.</p>
]]></description><pubDate>Fri, 27 Mar 2026 16:37:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47544935</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47544935</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47544935</guid></item><item><title><![CDATA[New comment by spiffyk in "A Faster Alternative to Jq"]]></title><description><![CDATA[
<p>First, if a performance optimization is a reliability regression, it was done wrong. A bounds check is removed because something somewhere else is supposed to already guaratee it won't be violated, not just in a vacuum. If the guarantee stands, removing the extra check makes your program faster and there is no reliability regression whatsoever.<p>And how does performance improve reliability? Well, a more performant service is harder to overwhelm with a flood of requests.</p>
]]></description><pubDate>Fri, 27 Mar 2026 13:22:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=47542346</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47542346</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47542346</guid></item><item><title><![CDATA[New comment by spiffyk in "The gold standard of optimization: A look under the hood of RollerCoaster Tycoon"]]></title><description><![CDATA[
<p>That whole section is kind of weird. The mention of operator overloading also seems out of place, since the operator is not overloaded here at all.</p>
]]></description><pubDate>Mon, 23 Mar 2026 16:26:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=47491670</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47491670</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47491670</guid></item><item><title><![CDATA[New comment by spiffyk in "Migrating to the EU"]]></title><description><![CDATA[
<p>Not that it fits everyone, but that is basically how the Linux kernel is being developed.</p>
]]></description><pubDate>Mon, 23 Mar 2026 11:48:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47488152</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47488152</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47488152</guid></item><item><title><![CDATA[New comment by spiffyk in "TUI Studio – visual terminal UI design tool"]]></title><description><![CDATA[
<p>That, too, though I'm sure that particular problem is mainly because of the textual animation in the background.</p>
]]></description><pubDate>Fri, 13 Mar 2026 15:21:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=47365687</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47365687</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47365687</guid></item><item><title><![CDATA[New comment by spiffyk in "TUI Studio – visual terminal UI design tool"]]></title><description><![CDATA[
<p>Funny how you can tell a project is vibe-coded just from a first glance at its website. All these websites seem to somehow have the same visual style. Anyone noticed this?</p>
]]></description><pubDate>Fri, 13 Mar 2026 14:57:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47365356</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47365356</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47365356</guid></item><item><title><![CDATA[Given AI, should I still consider becoming a computer programmer? – Yes, and]]></title><description><![CDATA[
<p>Article URL: <a href="https://htmx.org/essays/yes-and/">https://htmx.org/essays/yes-and/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47338872">https://news.ycombinator.com/item?id=47338872</a></p>
<p>Points: 4</p>
<p># Comments: 2</p>
]]></description><pubDate>Wed, 11 Mar 2026 17:54:44 +0000</pubDate><link>https://htmx.org/essays/yes-and/</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47338872</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47338872</guid></item><item><title><![CDATA[New comment by spiffyk in "Is legal the same as legitimate: AI reimplementation and the erosion of copyleft"]]></title><description><![CDATA[
<p>That is also my understanding.  My personal theory is that many corporate compliance departments (or whoever is in charge of this at a particular place) just disallow any *GPL use in their company, regardless of whether it would actually cause problems, so this is an attempt to "unblock" the library for those.  Instead of, you know, educating people about the nuances of different copyleft licenses.</p>
]]></description><pubDate>Tue, 10 Mar 2026 14:49:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=47324044</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47324044</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47324044</guid></item><item><title><![CDATA[New comment by spiffyk in "Making Video Games in 2025 (without an engine)"]]></title><description><![CDATA[
<p>The indie gamedev scene is full of people for whom games are an art form. These people don't give two hoots about what "the industry" prioritizes, they just want to make their games their way.<p>Calling their creations slop and suggesting using AI to make them is honestly quite the insult.</p>
]]></description><pubDate>Tue, 03 Mar 2026 10:54:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47230685</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47230685</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47230685</guid></item><item><title><![CDATA[New comment by spiffyk in "Making Video Games in 2025 (without an engine)"]]></title><description><![CDATA[
<p>I think the biggest mistake you can make is shifting your mindset from <i>making a game</i> to <i>making a game engine</i>.  No, you still want to be dead set on <i>making your game</i>, you just don't have the ready-made building blocks from an off-the-shelf engine, so you have to make your own as you go, and only as needed.  Personally, when I was working on my little game, I found it helpful to call the endeavour—just like Noel Berry in TFA—"making a game <i>without an engine</i>", rather than "making a custom game engine".  I only really wrote the absolutely necessary plumbing that I needed for the game I was making, nothing more.<p>The same goes for software libraries in general, I think.  Just make your program.  Don't make an overly general library for something you won't need anyway.  If the code proves useful for reuse, just factor it out after the fact and generalize as needed.<p>EDIT: Typos, wording</p>
]]></description><pubDate>Mon, 02 Mar 2026 12:46:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=47217324</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47217324</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47217324</guid></item><item><title><![CDATA[New comment by spiffyk in "What I learned designing a barebones UI engine"]]></title><description><![CDATA[
<p>> What if something is costly, that you need to compute dynamically, but not often, makes it into the frame? Do you separately now create a state flag for that one render object?<p>The point of immediate mode UIs is not necessarily that there is no state specific to the UI, but rather that the state is owned by user code. You can (and, in these more complex cases, should) retain state between frames. The main difference is that the state is still managed by your code, rather than the UI system ("library", whatever).</p>
]]></description><pubDate>Mon, 23 Feb 2026 13:39:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47122174</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47122174</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47122174</guid></item><item><title><![CDATA[New comment by spiffyk in "What I learned designing a barebones UI engine"]]></title><description><![CDATA[
<p>I actually use a very similar paradigm successfully in a game [1] whose (immediate-mode) UI is fully responsive. I allow more operations than just cutting to do that, but the basic idea seems to be the same. The code may look like a bit of a mess at a first glance [2], but I still find it easier to work with and make it do what I actually want with some very basic vector maths, than with the layout-container rules of most UI frameworks.<p>[1]: <a href="https://fruitsandtails.fghj.cz/" rel="nofollow">https://fruitsandtails.fghj.cz/</a><p>[2]: <a href="https://codeberg.org/spiffyk/FruitsAndTails/src/branch/main/client/src/engine/About.zig" rel="nofollow">https://codeberg.org/spiffyk/FruitsAndTails/src/branch/main/...</a></p>
]]></description><pubDate>Mon, 23 Feb 2026 11:13:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47120780</link><dc:creator>spiffyk</dc:creator><comments>https://news.ycombinator.com/item?id=47120780</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47120780</guid></item></channel></rss>