<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: teo_zero</title><link>https://news.ycombinator.com/user?id=teo_zero</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 20 Sep 2026 14:37:51 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=teo_zero" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by teo_zero in "C++26: Trivial infinite loops are no longer undefined behaviour"]]></title><description><![CDATA[
<p>> Why use a for loop with a bound as an example instead of while loops with linked lists?<p>I'm the author of the example. I wanted to keep it as simple as possible, and this is the most common form of for loop. I was sure that HN readers would be clever enough to "map" it to whatever they have in their mind that satisfy the undecidability of the condition.<p>But since you're nitpicking, I haven't specified the types of i and n: i is uint8_t and n is uint32_t. Does it terminate? It depends on the value of n!</p>
]]></description><pubDate>Sun, 20 Sep 2026 13:47:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=49775863</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49775863</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49775863</guid></item><item><title><![CDATA[New comment by teo_zero in "C++26: Trivial infinite loops are no longer undefined behaviour"]]></title><description><![CDATA[
<p>Whenever you write a succinct example or a metaphor to try to explain in a few words a complicated concept, someone will nitpick small details of your construction, thus focusing on the form and missing the spirit!<p>Forget if "i<n" is decidable or not: the sense is that there will always be some loops that the compiler can't determine if it's finite or not.<p>Forget if A and B can alias or not: the sense is having two independent actions that can be executed in the same loop or in two consecutive loops.<p>Let's see... what about the following example, that replaces all a's with @ and all e's with & in a zero-terminated string s?<p><pre><code>  for (char *p=s; *p; p++)
    if (*p=='a')
      *p='@';
  for (char *p=s; *p; p++)
    if (*p=='e')
      *p='&';
</code></pre>
If a compiler is allowed to assume that the first loop terminates, then it may optimize it to:<p><pre><code>  for (char *p=s; *p; p++) {
    if (*p=='a')
      *p='@';
    if (*p=='e')
      *p='&';
  }
</code></pre>
Is this explanation less insane?</p>
]]></description><pubDate>Sun, 20 Sep 2026 13:21:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=49775602</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49775602</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49775602</guid></item><item><title><![CDATA[New comment by teo_zero in "C++26: Trivial infinite loops are no longer undefined behaviour"]]></title><description><![CDATA[
<p>> I'm not sure what this has to do with my comment<p>Because you explicitly mentioned details that belong in the implementation, not in the semantic:<p>> A halt/abort instruction that trashes [the] state would be undesirable<p>If you want to attach a debugger, then use a breakpoint, don't try to obtain the same effect <i>within</i> the code.</p>
]]></description><pubDate>Sat, 19 Sep 2026 20:04:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=49769699</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49769699</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49769699</guid></item><item><title><![CDATA[New comment by teo_zero in "C++26: Trivial infinite loops are no longer undefined behaviour"]]></title><description><![CDATA[
<p>Take this example:<p><pre><code>  for (i=0;i<n;i++)
    A[i]=0;
  for (i=0;i<n;i++)
    B[i]=0;
</code></pre>
It can be conveniently transformed into this:<p><pre><code>  for (i=0;i<n;i++)
    A[i]=B[i]=0;
</code></pre>
They are exactly equivalent <i>except</i> if the first loop never terminates.<p>Now, the compiler could try to understand if the first loop does or doesn't terminate, and apply or not the optimization accordingly, but Turing tought us that is indeed a hard task!<p>Or it could decide to never apply it, for fear of those rare and usually pathological cases where the first loop doesn't terminate.<p>Or it could decide to apply it by default and accept that in those cases the program does something different than what the source code says. The latter is better known as UB.<p>The third option won, and that's why infinite loops are UB in the standard.</p>
]]></description><pubDate>Sat, 19 Sep 2026 07:05:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=49764100</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49764100</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49764100</guid></item><item><title><![CDATA[New comment by teo_zero in "C++26: Trivial infinite loops are no longer undefined behaviour"]]></title><description><![CDATA[
<p>Expecting a piece of code to be compiled to a precise sequence of machine instructions is exactly what you should not do with high-level languages like C++. Their task is exactly to abstract the machine away. They give you the guarantee that the final observable result will be what you asked for, not that the means to obtain that result will be what you have in mind.<p>If you write a loop to zero out some memory, it can be compiled to a loop, or to a call to an optimized predefined function, or even to a sequence of single zeroing instructions, if the size is small enough.<p>Even a single statement as a=0 may be compiled to a "load immediate" instruction, or an "XOR with itself", or a "sub with itself", or a move from another register known to be 0.</p>
]]></description><pubDate>Sat, 19 Sep 2026 06:29:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=49763932</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49763932</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49763932</guid></item><item><title><![CDATA[New comment by teo_zero in "Base84 deserves a place in file names"]]></title><description><![CDATA[
<p>> How about case-insensitive filesystems? [...] Negligible.<p>I don't buy this. Finding collisions is pretty easy. In one repository I have these files:<p><pre><code>  rank2.cpp
  rank4.cpp
  rankN.cpp
</code></pre>
The last two have the same case-insensitive Base84 encoding:<p><pre><code>  mz{QkARW;1cB
  mz{QkaRW;1cB</code></pre></p>
]]></description><pubDate>Mon, 14 Sep 2026 10:57:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=49694845</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49694845</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49694845</guid></item><item><title><![CDATA[New comment by teo_zero in "Customizing my Compaq MX-11800 keyboard"]]></title><description><![CDATA[
<p>> I really like this website design<p>Reading it on my phone, I beg to differ.</p>
]]></description><pubDate>Sat, 12 Sep 2026 02:16:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=49668023</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49668023</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49668023</guid></item><item><title><![CDATA[New comment by teo_zero in "Show HN: GET Together – A social network where you don't need POST to Post"]]></title><description><![CDATA[
<p>Doesn't pressing "back" in the browser repost the same message?</p>
]]></description><pubDate>Mon, 07 Sep 2026 05:19:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=49594162</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49594162</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49594162</guid></item><item><title><![CDATA[New comment by teo_zero in "New type of dice guarantees no tie when deciding who goes first"]]></title><description><![CDATA[
<p>How do you decide who is going to pull the tokens?</p>
]]></description><pubDate>Fri, 04 Sep 2026 05:26:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=49560838</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49560838</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49560838</guid></item><item><title><![CDATA[New comment by teo_zero in "New type of dice guarantees no tie when deciding who goes first"]]></title><description><![CDATA[
<p>And how do you decide who is going to throw that one die?</p>
]]></description><pubDate>Fri, 04 Sep 2026 05:20:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=49560797</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49560797</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49560797</guid></item><item><title><![CDATA[New comment by teo_zero in "Why OOP Exists"]]></title><description><![CDATA[
<p>> this is just structs.<p>Yes. And structs are just bytes. Levels of abstractions don't <i>do</i> anything the underlying levels don't already do, they just give you means to express your intent in a clearer form.</p>
]]></description><pubDate>Mon, 31 Aug 2026 08:28:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=49507093</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49507093</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49507093</guid></item><item><title><![CDATA[New comment by teo_zero in "Creepy Crawlies"]]></title><description><![CDATA[
<p>But there are "cubic bazillions" of possible URLs that are being requested. Even if they boil down to "only" some millions actual commits, their rendered HTMLs are all different.</p>
]]></description><pubDate>Sun, 30 Aug 2026 14:43:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=49499104</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49499104</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49499104</guid></item><item><title><![CDATA[New comment by teo_zero in "Benchmarking Pocket-Scale Inference"]]></title><description><![CDATA[
<p>Tangent question: what about NPU performance? I always read about CPU vs GPU, but nobody talks about NPUs; I don't even know if llama supports them.<p>Why do phones and laptops get equipped with NPUs if there's no use for them?</p>
]]></description><pubDate>Sun, 30 Aug 2026 14:29:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=49498974</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49498974</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49498974</guid></item><item><title><![CDATA[New comment by teo_zero in "Tether: iMessage, SMS, etc. on Linux"]]></title><description><![CDATA[
<p>This is for iPhones only. Do I assume correctly that the issue is solved for Android, instead?</p>
]]></description><pubDate>Sat, 29 Aug 2026 17:55:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=49491841</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49491841</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49491841</guid></item><item><title><![CDATA[New comment by teo_zero in "Don't Wordle"]]></title><description><![CDATA[
<p>> count undo as a partial game over<p>Not at all. Contrary to other games where undos are cheating, here they are part of the game. Without them it would be 80% luck and only 20% strategy.<p>> which is heavily implied<p>I can't find anything that implies this. It explicitly says:<p>> This uses undos deliberately rather than only as an emergency<p>while avoiding undos is mentioned at the end as "The Purist approach", which I read as slightly mocking.<p>I see it like a chess <i>problem</i> where you have to find the best sequence of moves, so you start off with an intial move, then backtrack, explore another idea, etc. Not like a chess <i>match</i> where of course you cannot undo any move.</p>
]]></description><pubDate>Wed, 26 Aug 2026 06:14:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=49444715</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49444715</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49444715</guid></item><item><title><![CDATA[New comment by teo_zero in "Don't Wordle"]]></title><description><![CDATA[
<p>If your first word is four greens it's actually pretty good: you get to know four letters to avoid with just one undo!</p>
]]></description><pubDate>Tue, 25 Aug 2026 20:06:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=49439861</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49439861</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49439861</guid></item><item><title><![CDATA[New comment by teo_zero in "Turns are Better than Radians (2022)"]]></title><description><![CDATA[
<p>You might have misunderstood TFA. No push for trig reform, just a consideration on what internal representation is optimal in code.<p>Imagine it like someone suggesting (understandably) that you express memory sizes in hex: no push to make everybody stop using decimal numbers!</p>
]]></description><pubDate>Thu, 20 Aug 2026 08:33:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=49371943</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49371943</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49371943</guid></item><item><title><![CDATA[New comment by teo_zero in "Turns are Better than Radians (2022)"]]></title><description><![CDATA[
<p>The C standard defines the functions sinpi(), cospi(), etc. that act on half-turns. If you have a modern compiler, all you have to do is to include math.h</p>
]]></description><pubDate>Thu, 20 Aug 2026 08:24:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=49371883</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49371883</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49371883</guid></item><item><title><![CDATA[New comment by teo_zero in "AI;DR (AI; Didn't Read)"]]></title><description><![CDATA[
<p>Sure, it's your choice where to put your precious time. Exactly like Sheldon, you prefer not to dedicate any energy to question a judgment you have decided <i>a priori</i>. And like him, you might be missing out on some good stuff.</p>
]]></description><pubDate>Tue, 18 Aug 2026 12:27:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=49344679</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49344679</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49344679</guid></item><item><title><![CDATA[New comment by teo_zero in "AI;DR (AI; Didn't Read)"]]></title><description><![CDATA[
<p>While you went this road of the medical metaphor, taking antibiotics at the first suspect of sickness without checking what's really going on, is a sure way to help develop antibiotic-resistant viruses.<p>Please note the key item is <i>without checking</i>. I'm not denying that many AI-generated documents are likely to be garbage. But refusing to read them just because of it will result in a lot of throwing the baby out with the bathwater.</p>
]]></description><pubDate>Tue, 18 Aug 2026 12:12:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=49344551</link><dc:creator>teo_zero</dc:creator><comments>https://news.ycombinator.com/item?id=49344551</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49344551</guid></item></channel></rss>