<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: amavect</title><link>https://news.ycombinator.com/user?id=amavect</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 17 Aug 2026 13:11:58 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=amavect" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by amavect in "The lattice of sets of natural numbers is rich (2021)"]]></title><description><![CDATA[
<p>Not happy to respond to LLM talk, but you seem interested anyway. Some sleight of hand happens between "fixing a formal system" and using Cantor's theorem for the metamathematical analysis, as if we use classical set theory anyway. Note that you cannot construct any particular example of a non-definable set, which should cast doubt of existence. I'll disagree by pointing to anti-classical set theories. The axiom of infinity proves independence from ZFC, so I can freely replace the axiom of infinity with its negation, then the natural numbers no longer form a set. Some constructive analysis systems include an axiom that every real-valued function is continuous (as discontinuous functions are undecidable).<p><a href="https://en.wikipedia.org/wiki/Axiom_of_infinity#Independence" rel="nofollow">https://en.wikipedia.org/wiki/Axiom_of_infinity#Independence</a><p><a href="https://en.wikipedia.org/wiki/Constructive_analysis#Anti-classical_schools" rel="nofollow">https://en.wikipedia.org/wiki/Constructive_analysis#Anti-cla...</a></p>
]]></description><pubDate>Sun, 16 Aug 2026 06:12:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=49317339</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=49317339</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49317339</guid></item><item><title><![CDATA[New comment by amavect in "The lattice of sets of natural numbers is rich (2021)"]]></title><description><![CDATA[
<p>Exactly. For example, John Mayberry wrote "The Foundations of Mathematics in the Theory of Sets" (2000). Half of the book consists of philosophical arguments for his "Euclidean set theory" contrasted against the big bad "Cantorian set theory". He takes inspiration from Euclid's common notion 5 "the whole is greater than the part". On page 277, formula 8.3.1, his Axiom of Euclidean Finiteness goes like this: any injective endofunction is also surjective, ∀f∀Y((f:Y→Y ∧ 1to1(f)) ⇒ onto(f)).<p>I've come to believe that many related incompatible theories have interpretations between each other. For example, hyperbolic geometry has a Euclidean-like Poincare disk model, and Euclidean space exists locally in a hyperbolic space. Boolean logic contains intuitionistic logic (just add the law of excluded middle), but intuitionistic logic contains Boolean logic through the double negation translation. Similar might happen for finite set theories, infinite set theories, and neutral set theories. The fun includes finding the right translation so that we can all enjoy our different tastes in axioms.</p>
]]></description><pubDate>Fri, 14 Aug 2026 19:32:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=49303543</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=49303543</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49303543</guid></item><item><title><![CDATA[New comment by amavect in "The lattice of sets of natural numbers is rich (2021)"]]></title><description><![CDATA[
<p>For example? And does "first-order arithmetic" mean ZFC?</p>
]]></description><pubDate>Fri, 14 Aug 2026 13:28:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=49298402</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=49298402</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49298402</guid></item><item><title><![CDATA[New comment by amavect in "The lattice of sets of natural numbers is rich (2021)"]]></title><description><![CDATA[
<p>Not really. Math uses no physical observation, only axioms. Nothing can "prove" or "disprove" axioms. However, if observation supports the axiomatic theory, then we use the theory for physical prediction. If observation doesn't, then we don't use the theory. Does that count as "disproof"?<p>In practice, infinite sets never exist as enumerations of every element, but as ways to generate more elements along with descriptions for which elements to include. Infinite set theories allow for equivocating a finite description with the infinite enumeration. In contrast, programming languages usually make a distinction between data (always finite) and data generation (possibly infinite). I would think that counts as a "disproof" in a way.</p>
]]></description><pubDate>Thu, 13 Aug 2026 19:06:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=49290535</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=49290535</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49290535</guid></item><item><title><![CDATA[New comment by amavect in "Tail-call optimization in C is relatively recent (2025)"]]></title><description><![CDATA[
<p>I recently played around with what I call "manual tail-call optimization": transform a tail call to a goto to the beginning of the function. Check it out: <a href="https://godbolt.org/z/3fY1v1oeW" rel="nofollow">https://godbolt.org/z/3fY1v1oeW</a><p><pre><code>  int factorial_loop_iterative(int n, int a){
    while(n > 0){
      a = a * n;
      n = n - 1;
    }
    return a;
  }
  
  int factorial_loop_recursive(int n, int a){
    if(n > 0){
      return factorial_loop_recursive(n - 1, a * n);
    }else{
      return a;
    }
  }
  
  int factorial_loop_manual(int n, int a){
  tailcall:
    if(n > 0){
      a = a * n;
      n = n - 1;
      goto tailcall;
    }else{
      return a;
    }
  }
  
  int (*factorial_loop)(int n, int a) = factorial_loop_manual;
  
  int factorial(int n){
    return factorial_loop(n, 0);
  }
</code></pre>
I recommend against, of course! Incorrectly sequencing the manual version results in bugs (swap the assignment for n and a), which the recursive version doesn't need to care about.</p>
]]></description><pubDate>Mon, 10 Aug 2026 20:37:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=49249361</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=49249361</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49249361</guid></item><item><title><![CDATA[New comment by amavect in "Kalshi attacks a Wisconsin law banning election bets as 'voter suppression'"]]></title><description><![CDATA[
<p>Why yes, I want to read research confirming common sense. And more valuable, I can read the nuance of it too (quantifying how much safer compared to cigarettes).</p>
]]></description><pubDate>Wed, 29 Jul 2026 18:08:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=49100955</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=49100955</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49100955</guid></item><item><title><![CDATA[New comment by amavect in "Kalshi attacks a Wisconsin law banning election bets as 'voter suppression'"]]></title><description><![CDATA[
<p>Well, I have no clue about their relative safety and would like to read more.</p>
]]></description><pubDate>Wed, 29 Jul 2026 18:05:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=49100907</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=49100907</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49100907</guid></item><item><title><![CDATA[New comment by amavect in "Kalshi attacks a Wisconsin law banning election bets as 'voter suppression'"]]></title><description><![CDATA[
<p>I see replies that keep repeating the same "it's got no smoke and tar so it must cause far less harm", as if common sense always matches reality. Coating the lungs with cooked propylene glycol and glycerine could cause similar harm to smoke and tar, or even entirely new harms, but I don't really know that. Use empiricism and share reviews, please.<p>Direct health implications of e-cigarette use: a systematic scoping review with evidence assessment <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC11317248/" rel="nofollow">https://pmc.ncbi.nlm.nih.gov/articles/PMC11317248/</a><p>"Conclusion: Smokers or former smokers who switch to e-cigarettes may reduce their exposure to carcinogens and lower their risk of developing severe health issues associated with conventional smoking. However, in healthy individuals who have never smoked traditional cigarettes, the use of e-cigarettes introduces several cardiovascular and respiratory adverse effects. These findings suggest that while e-cigarettes can be a strategic harm reduction tool for smokers, they are not a safe option for non-smokers."<p>E-Cigarette Use, Small Airway Fibrosis, and Constrictive Bronchiolitis <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC10137322/" rel="nofollow">https://pmc.ncbi.nlm.nih.gov/articles/PMC10137322/</a><p>"CONCLUSIONS: After thorough evaluation for other potential etiologies, vaping was considered to be the most likely common causal etiology for all patients due to the temporal association of symptomatic chronic lung disease with e-cigarette use and partial improvement in symptoms after e-cigarette cessation. In this series, we associate the histopathologic pattern of small airway–centered fibrosis, including constrictive bronchiolitis, with vaping, potentially defining a clinical and pathologic entity associated with e-cigarette use. (Funded in part by the National Institutes of Health.)"<p>E-cigarettes and Vaping: A Smoking Cessation Method or Another Smoking Innovation? <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC9833272/" rel="nofollow">https://pmc.ncbi.nlm.nih.gov/articles/PMC9833272/</a><p>"Abstract: [cut] With well-known health risks from traditional smoking, e-cigarettes are viewed as a safe way of smoking, appealing more to youth. Additionally, extensive e-cigarette marketing boosted by the internet and fame has resulted in worries that e-cigarettes can lead to a renormalization of cigarette smoking and can be used as a new method to consume vaporized drugs. Although the concern that e-cigarettes are as harmful as traditional smoking has been raised, youth and most healthcare providers remain relatively unaware. [cut]"</p>
]]></description><pubDate>Wed, 29 Jul 2026 17:13:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=49100247</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=49100247</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49100247</guid></item><item><title><![CDATA[New comment by amavect in "The Proof Machine (2016)"]]></title><description><![CDATA[
<p>Just thought of how to fix the problem I had. Since the program already highlights the inductive hypothesis blue (but doesn't underline), consider adding a clickable underline to it (Rewrite with IH) instead of requiring the green IH box on the left (banner blindness). See if you can get rid of any drag&drop features and focus more on underline and click (TouchProof, not DragProof). Then the tip box would only need to explain clicking underlined terms.<p>And another thing, when 2 underlined terms nest (say, Sn+0=0 with underlines on Sn+0 and n), hovering should highlight only the more specific term (hovering on n highlights both Sn+0 and n the same color).</p>
]]></description><pubDate>Mon, 27 Jul 2026 17:35:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=49072989</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=49072989</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49072989</guid></item><item><title><![CDATA[New comment by amavect in "The Proof Machine (2016)"]]></title><description><![CDATA[
<p>I got stuck in a loop on 8 "Adding zero to the right", blindly following the tip below the box keeps looping induction introduction. Looping 9 times following the help tip, it eventually complains about an invalid proof state (kernel isn't general enough?). Where's the inductive hypothesis... doh the green box labeled IH on the left side. User error lol. But I feel that folks unfamiliar with proofs would struggle with it.<p>Also, please remove the rise-in animation so that switching proofs feels faster and less flashy. The rest of the website design has enough flash.<p>Enough complaints, pretty cool! I did all 20 exercises. Thanks for sharing.</p>
]]></description><pubDate>Mon, 27 Jul 2026 16:57:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=49072440</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=49072440</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49072440</guid></item><item><title><![CDATA[New comment by amavect in "Almost Always Unsigned"]]></title><description><![CDATA[
<p>Cool!! I really like how the overflow condition reads. "When the source and destination have the same sign, but the result a different sign, then signed addition overflows."<p>x86 has SETC/SETNC and SETO/SETNO to pull the carry/overflow bits out of the status register.<p><pre><code>  u+: ADD then SETNC
  u-: CMP then SETNC
  s+: ADD then SETNO
  s-: CMP then SETNO
</code></pre>
C23 adds checked arithmetic, and gcc implements them as built-in, generating SETO/SETNO. I can't find a way to generate SETNO otherwise. <a href="https://godbolt.org/z/4EjecdW1d" rel="nofollow">https://godbolt.org/z/4EjecdW1d</a><p><pre><code>  #include <stdint.h>
  #include <stdckdint.h>

  int add_u(unsigned x, unsigned y){
    return x <= ~y;
  }
  int sub_u(unsigned x, unsigned y) {
    return x <= y;
  }
  int add_u2(unsigned x, unsigned y){
    return !ckd_add(&x, x, y);
  }
  int sub_u2(unsigned x, unsigned y) {
    return !ckd_sub(&x, x, y);
  }
  int add_s(int x, int y){
    return !ckd_add(&x, x, y);
  }
  int sub_s(int x, int y) {
    return !ckd_sub(&x, x, y);
  }
</code></pre>
Now, I the difficulty you talk about goes deeper than high level language semantics. Math and predicate logic can't easily talk about a carry flag or an overflow flag. Math equivocates unsigned comparisons with signed comparisons: unsigned < means carry flag, signed < means sign flag != overflow flag. Thus, by coincidence, unsigned < can talk about carry, but < cannot talk about only overflow (without the sign flag). Furthermore, a theorem-proving language wants to prove that overflow cannot happen before attempting to calculate it.<p>So, despite you clearly showing that carry and overflow have the same calculation cost, I don't know how to represent those predicates in a usual math language with equal symbol length or complexity.</p>
]]></description><pubDate>Mon, 13 Jul 2026 17:15:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48895792</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=48895792</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48895792</guid></item><item><title><![CDATA[New comment by amavect in "Computation as a universal and fundamental concept"]]></title><description><![CDATA[
<p>You sound like you believe in philosophical skepticism. Tell me: can a map ever properly describe the territory? When would a map properly describe the territory? (Can a theory ever properly describe reality? What does a theory need to properly describe reality?)<p>We know that universal Turing machines can emulate other Turing machines. Weirdos like Wolfram believe that a universal Turing machine can emulate reality. In a quick skim of this lecture series, the presenter doesn't talk about that, rather he just calls computation a scientific principal (universal and fundamental in the sense of physical laws, not fundamental in the sense of emulating reality on a computer).</p>
]]></description><pubDate>Fri, 10 Jul 2026 21:39:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=48865665</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=48865665</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48865665</guid></item><item><title><![CDATA[New comment by amavect in "Almost Always Unsigned"]]></title><description><![CDATA[
<p>I included that to try to explain the symbol soup that correctly encodes the preconditions (the ∀ lines). I intended that to mean "I need to make sure that y+x doesn't overflow", even that unsigned arithmetic cannot express that precondition in that way, as you point out. From there, derive y ≤ INT_MAX-x as the actual precondition for unsigned addition. I forgot that "ensure" actually means something in some programming languages, sorry for the confusion.<p>More simply put, unsigned addition needs to check that y+x doesn't overflow, while signed addition needs to check that y+x doesn't overflow and doesn't underflow. So, unsigned arithmetic has a simpler precondition that would win a technical debate on whether to use signed or unsigned arithmetic, but since most programming languages lack theorem proving, signed arithmetic wins on the small integer assumption.</p>
]]></description><pubDate>Fri, 10 Jul 2026 15:53:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=48861633</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=48861633</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48861633</guid></item><item><title><![CDATA[New comment by amavect in "Almost Always Unsigned"]]></title><description><![CDATA[
<p>Pedantically, that doesn't properly invert post-increment in the loop step. It decrements one extra time. If I need to use the loop index after the loop, then decrementing in the condition would cause problems.<p><pre><code>  size_t i = size;
  while(i-- > 0){
    // loop body, possibly break
  }
  use(i); // i wraps below 0

  size_t i = size;
  while(i > 0){
    i--;
    // loop body, possibly break
  }
  use(i); // i doesn't wrap
</code></pre>
Practically, i leaves the for-loop scope, so most never encounter this problem.</p>
]]></description><pubDate>Fri, 10 Jul 2026 15:44:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48861483</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=48861483</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48861483</guid></item><item><title><![CDATA[New comment by amavect in "Almost Always Unsigned"]]></title><description><![CDATA[
<p>I believe the main issue lies in most programming languages lacking theorem proving capabilities to prove the safety of integer operations.<p>The safety conditions for unsigned arithmetic:<p><pre><code>  Ensure y+x ≤ INT_MAX.
  If x ≤ UINT_MAX-y, then x+y evaluates correctly:
  ∀x∀y(x ≤ UINT_MAX-y → ∃z(z = y+x))

  Ensure y-x ≤ INT_MAX.
  If x≤y, then y-x evaluates correctly:
  ∀x∀y(x≤y → ∃z(z = y-x))
</code></pre>
The safety conditions for signed arithmetic:<p><pre><code>  Ensure INT_MIN ≤ y+x and y+x ≤ INT_MAX.
  To avoid overflow or underflow, first compare x to 0.
  In the case x≤0, INT_MIN-x cannot underflow, and y+x cannot overflow. If y compares greater than INT_MIN-x, then y+x evaluates correctly.
  In the case 0≤x, then INT_MAX-x cannot overflow, and y+x cannot underflow. And if y compares less than INT_MAX-x, then y+x evaluates correctly.
  ∀x∀y((x≤0 ∧ INT_MIN-x≤y)∨(0≤x ∧ y≤INT_MAX-x) → ∃z(z = y-x))

  Ensure INT_MIN ≤ y-x and y-x ≤ INT_MAX.
  To avoid overflow or underflow, first compare x to 0.
  In the case 0≤x, INT_MIN+x cannot underflow, and y-x cannot overflow. If y compares greater than INT_MIN+x, then y-x evaluates correctly.
  In the case x≤0, INT_MAX+x cannot overflow, and y-x cannot underflow. If y compares less than INT_MAX+x, then y-x evaluates correctly.
  ∀x∀y((0≤x ∧ INT_MIN-x≤y)∨(x≤0 ∧ y≤INT_MAX+x) → ∃z(z = y-x))
</code></pre>
The programmers that prefer unsigned arithmetic intuitively feel the greater simplicity compared to signed integers, but without any theorem proving, I agree that your assumption of small integers strongly supports signed integers.</p>
]]></description><pubDate>Fri, 10 Jul 2026 00:53:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=48854449</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=48854449</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48854449</guid></item><item><title><![CDATA[New comment by amavect in "Almost Always Unsigned"]]></title><description><![CDATA[
<p>Post-increment inverts to pre-decrement, but for-loops don't support proper syntax sugar for pre-decrement.<p><pre><code>  for(size_t i = 0; i < size; i++){
    // loop body
  }
  for(size_t i = size; i > 0;){ i--;
    // loop body
  }</code></pre></p>
]]></description><pubDate>Fri, 10 Jul 2026 00:04:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=48854146</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=48854146</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48854146</guid></item><item><title><![CDATA[New comment by amavect in "Everything is logarithms"]]></title><description><![CDATA[
<p>Hah, I can use this to give decibels an actual unit.<p><pre><code>  dB_P = log(10)/10
  dB_F = log(10)/20
  log(10*V) = log(V) + 20*dB_F  // the level of 10 V equals 20 dB more than the power level of 1 V.

  SPL = 20*10^-6 * Pa
  hearing_damage = log(SPL) + 90*dB_F  // hearing damage occurs over 90 dB_F above SPL (neglecting A-weighting)
  pow(hearing_damage) = pow(log(SPL) + 90*dB_F))
  pow(hearing_damage) = pow(log(SPL) + 90*log(10)/20))
  pow(hearing_damage) = SPL*pow(90*log(10)/20))
  pow(hearing_damage) = SPL*31622.7766  // the pressure of hearing damage occurs above 31622 times SPL
  pow(hearing_damage) = 0.632455532 Pa  // the pressure of hearing damage occurs above 0.632 Pa
</code></pre>
Very helpful!! Imagine combining the goofy list of decibel suffixes into a uniform notation. Write the logarithm first so the + or - stays in the same spot.<p><pre><code>  log(reference_unit) + value*dB_F (or dB_P)
  log(reference_unit) - value*dB_F (or dB_P)
</code></pre>
<a href="https://en.wikipedia.org/wiki/Decibel#List_of_suffixes" rel="nofollow">https://en.wikipedia.org/wiki/Decibel#List_of_suffixes</a></p>
]]></description><pubDate>Mon, 22 Jun 2026 18:22:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=48633909</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=48633909</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48633909</guid></item><item><title><![CDATA[New comment by amavect in "Everything is logarithms"]]></title><description><![CDATA[
<p>>You might ask: if we have a baseless logarithm log(N), do we also have a “baseless exponential”?<p>Sure we can, with some naive algebra. If we can take log(x,base) and drop the base, then we can also take pow(base,x) and drop the base. Since bits=log(2), then pow(bits)=2. You can probably connect it to the reverse of things, like integrals.<p>Also, for fun, I'll play with some notation tricks.<p><pre><code>  log(freq) = pitch
  freq = pow(pitch)
  octave = log(2)

  400*Hz = 100*Hz*4  // the frequency 400 Hz equals 4 times 100 Hz
  log(400*Hz) = log(100*Hz) + log(4)
  log(400*Hz) = log(100*Hz) + 2*log(2)
  log(400*Hz) = log(100*Hz) + 2*octave
  log(400*Hz) = log(100*Hz) + 2*octave  // the pitch of 400 Hz equals 2 octaves above the pitch of 100 Hz

  cent = log(2)/1200
  A4 = log(440*Hz)
  B4 = A4 + 200*cent  // the pitch B4 equals 200 cents above A4
  B4 = log(440*Hz) + 200*log(2)/1200
  B4 = log(440*Hz) + log(2^(2/12))
  B4 = log(440*Hz * 2^(2/12))
  pow(B4) = 493.883 Hz  // the frequency of B4 equals 493.883 Hz
</code></pre>
I like the intuition that baseless logarithm notation gives, and it also avoids needing to choose a specific reference point. I can also directly calculate by choosing an arbitrary base:<p><pre><code>  pow(log(440*Hz) + 200*log(2)/1200)
  exp(ln(440) + 200*ln(2)/1200)</code></pre></p>
]]></description><pubDate>Mon, 22 Jun 2026 15:58:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48632007</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=48632007</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48632007</guid></item><item><title><![CDATA[New comment by amavect in "Peopleless economy? Not technically impossible"]]></title><description><![CDATA[
<p>That graph ends in 2015. The 2025 graph flattens. Looks like we can explain this trend by the economic development of East Asia.<p><a href="https://en.wikipedia.org/wiki/File:Total_population_living_in_extreme_poverty,_by_world_region_(PovcalNet,_World_Bank),_OWID.svg" rel="nofollow">https://en.wikipedia.org/wiki/File:Total_population_living_i...</a><p><a href="https://en.wikipedia.org/wiki/Extreme_poverty" rel="nofollow">https://en.wikipedia.org/wiki/Extreme_poverty</a></p>
]]></description><pubDate>Tue, 16 Jun 2026 16:11:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=48557517</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=48557517</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48557517</guid></item><item><title><![CDATA[New comment by amavect in "Every Frame Perfect"]]></title><description><![CDATA[
<p>Perceptible latency goes well below 10 ms. <a href="https://www.youtube.com/watch?v=vOvQCPLkPt4" rel="nofollow">https://www.youtube.com/watch?v=vOvQCPLkPt4</a></p>
]]></description><pubDate>Sat, 13 Jun 2026 23:22:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48522487</link><dc:creator>amavect</dc:creator><comments>https://news.ycombinator.com/item?id=48522487</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48522487</guid></item></channel></rss>