<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: orlp</title><link>https://news.ycombinator.com/user?id=orlp</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 15 Aug 2026 16:10:01 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=orlp" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by orlp in "Rust project goals: Immobile types and guaranteed destructors"]]></title><description><![CDATA[
<p>This is the opposite, it is further opting out of flexibility.</p>
]]></description><pubDate>Mon, 03 Aug 2026 13:12:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49155349</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=49155349</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49155349</guid></item><item><title><![CDATA[New comment by orlp in "RFC 9851: TLS 1.2 is in Feature Freeze"]]></title><description><![CDATA[
<p>Isn't kind of the point of TLS that your communication doesn't get 'inspected'?</p>
]]></description><pubDate>Mon, 03 Aug 2026 08:42:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=49152935</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=49152935</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49152935</guid></item><item><title><![CDATA[New comment by orlp in "How Our Rust-to-Zig Rewrite Is Going"]]></title><description><![CDATA[
<p>I think if you interpret it charitably it means that any bug in the emitted machine code is already a likely memory-unsafe miscompilation if it is ran.<p>The compiler itself might be perfectly "memory safe" but the generated binary fundamentally is always at risk (besides WebAssembly I suppose).<p>I'm fully aware of the separation of compiler and binary, and being able to compile untrusted code safely is nice, but a perfectly safe compiler that generates vulnerable binaries isn't that much better.</p>
]]></description><pubDate>Thu, 16 Jul 2026 16:06:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=48936423</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48936423</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48936423</guid></item><item><title><![CDATA[New comment by orlp in "Almost Always Unsigned"]]></title><description><![CDATA[
<p>That's a GCC skill issue. You can do it in five branchless instructions for unsigned by splitting the unsigned up in two 32-bit halves, converting those to floats simply by inserting their values as mantissa into constants 2^52 and 2^(52 + 32). This conversion is exact.<p>Then to finish the conversion you subtract 2^52 and 2^(52 + 32) respectively from the halves and add them together.<p><pre><code>    vmovq       xmm0, rdi
    vpunpckldq  xmm0, xmm0, xmmword ptr [rip + .CONST1]
    vsubpd      xmm0, xmm0, xmmword ptr [rip + .CONST2]
    vshufpd     xmm1, xmm0, xmm0, 1
    vaddsd      xmm0, xmm1, xmm0
</code></pre>
Here CONST1 = [0x43300000, 0x45300000, 0, 0] and CONST2 = [0, 0x43300000, 0, 0x45300000].</p>
]]></description><pubDate>Sat, 11 Jul 2026 09:12:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48870238</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48870238</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48870238</guid></item><item><title><![CDATA[New comment by orlp in "SpaceX wants to launch 100k more Starlink satellites for 100x the bandwidth"]]></title><description><![CDATA[
<p>Don't give these ghouls ideas.</p>
]]></description><pubDate>Sat, 11 Jul 2026 08:16:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48869960</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48869960</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48869960</guid></item><item><title><![CDATA[New comment by orlp in "Orasort: 5x faster column-sorting with an expired patent from Oracle"]]></title><description><![CDATA[
<p>First, this article is mostly (AI?) regurgitation. This is much better: <a href="https://smalldatum.blogspot.com/2026/01/common-prefix-skipping-adaptive-sort.html" rel="nofollow">https://smalldatum.blogspot.com/2026/01/common-prefix-skippi...</a>.<p>Second, I have independently invented this (quicksort on string prefixes) at my time at CWI, although I didn't end up publishing it, because...<p>Third, this was already published in the original 1961 Quicksort paper by Hoare: <a href="https://www.cs.ox.ac.uk/files/6226/H2006%20-%20Historic%20Quicksort.pdf" rel="nofollow">https://www.cs.ox.ac.uk/files/6226/H2006%20-%20Historic%20Qu...</a>. Near the end, the section on "Multi-word keys" describes a quicksort that partitions on just the first word, and only accesses the next word for the equality partition. And funnily enough this paper credits P. Shackleton for this, thus this idea was thought of even before the Quicksort paper came out.<p>So as is usual for software patents, this patent never should have been awarded.</p>
]]></description><pubDate>Mon, 06 Jul 2026 20:17:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48809921</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48809921</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48809921</guid></item><item><title><![CDATA[New comment by orlp in "Professor denounces mass AI fraud on an exam at Brown"]]></title><description><![CDATA[
<p>This is a dumb take. It's like not teaching kids 1 + 1 because a calculator can do it for them.</p>
]]></description><pubDate>Sun, 28 Jun 2026 17:33:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=48709533</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48709533</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48709533</guid></item><item><title><![CDATA[New comment by orlp in "Ford hired AI and sacked humans. It backfired badly"]]></title><description><![CDATA[
<p>If your data is sufficiently noisy or your relationship sufficiently simple a linear regression will outperform a SOTA LLM.</p>
]]></description><pubDate>Sun, 28 Jun 2026 10:12:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=48706011</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48706011</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48706011</guid></item><item><title><![CDATA[New comment by orlp in "Apple announces significant price increases for MacBooks, iPads, more"]]></title><description><![CDATA[
<p>It seems like there aren't extra duties (anymore), but then again it's all very confusing and hard to navigate so who knows.</p>
]]></description><pubDate>Thu, 25 Jun 2026 17:07:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=48676361</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48676361</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48676361</guid></item><item><title><![CDATA[New comment by orlp in "Apple announces significant price increases for MacBooks, iPads, more"]]></title><description><![CDATA[
<p>You save a lot less after paying import duties.</p>
]]></description><pubDate>Thu, 25 Jun 2026 13:49:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48673380</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48673380</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48673380</guid></item><item><title><![CDATA[New comment by orlp in "MSG Made Dossier on Activists Who Opposed Facial Recognition"]]></title><description><![CDATA[
<p>Actually, they're making an effort to force your business to <i>not</i> do something.</p>
]]></description><pubDate>Tue, 23 Jun 2026 16:22:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=48647369</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48647369</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48647369</guid></item><item><title><![CDATA[New comment by orlp in "Shall we play a game? My AI nuclear simulation"]]></title><description><![CDATA[
<p>> Is there really anything about them that's bad?  Or any worse than other things?<p>A full-on nuclear war will literally make a large portion of our planet uninhabitable for anyone for centuries, and leave the rest severely crippled and contaminated.<p>Sorry I know we're supposed to be kind and whatnot in these comments but I can't help but explicitly state that your comment is one of the dumbest things I've read on this site in a while. I hope you otherwise have a good day.</p>
]]></description><pubDate>Thu, 11 Jun 2026 23:49:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=48497985</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48497985</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48497985</guid></item><item><title><![CDATA[New comment by orlp in "Major P2P issues in Israel and possibly other Middle East countries"]]></title><description><![CDATA[
<p><a href="https://en.wikipedia.org/wiki/Conscription_in_Iran" rel="nofollow">https://en.wikipedia.org/wiki/Conscription_in_Iran</a><p>FWIW I don't agree with the comment chain's source, I read "regular people" as "civilians" and don't think there was any nasty connotation meant.</p>
]]></description><pubDate>Sun, 07 Jun 2026 07:54:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48432792</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48432792</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48432792</guid></item><item><title><![CDATA[New comment by orlp in "Pokemon Emerald Ported to WebAssembly (100k FPS)"]]></title><description><![CDATA[
<p>Copyright being as long as it is is a theft of our culture. I (and many of our generation) grew up with Pokemon, it's a common experience for many of us. A classic of our culture. Except we're not allowed to use it, remix it, build our own versions, etc. We still do, of course, but it's all illegal.<p>It didn't used to be this way.<p>I think 20-30 years of copyright should be plenty to extract whatever profits you deserve from the fruits of your labor. Anything beyond that is just holding culture hostage for the benefit of a few. It doesn't serve society in any meaningful way.</p>
]]></description><pubDate>Sat, 06 Jun 2026 17:40:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=48427177</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48427177</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48427177</guid></item><item><title><![CDATA[New comment by orlp in "Branchless Quicksort faster than std:sort and pdqsort with C and C++ API"]]></title><description><![CDATA[
<p>It's just a play on words, something lightweight drifts in the wind rather than gliding on a wing. It's really not all that deep.</p>
]]></description><pubDate>Fri, 05 Jun 2026 16:00:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=48414378</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48414378</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48414378</guid></item><item><title><![CDATA[New comment by orlp in "Branchless Quicksort faster than std:sort and pdqsort with C and C++ API"]]></title><description><![CDATA[
<p>It's called driftsort because it's derived from another sort I made, glidesort: <a href="https://github.com/orlp/glidesort" rel="nofollow">https://github.com/orlp/glidesort</a>. Glidesort is a bit faster still for large inputs, however it was too large and complex for inclusion in the standard library, and suffered from code size penalties on small inputs. So driftsort is a slimmed down version more appropriate for general purpose.</p>
]]></description><pubDate>Fri, 05 Jun 2026 08:24:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48409599</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48409599</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48409599</guid></item><item><title><![CDATA[New comment by orlp in "Branchless Quicksort faster than std:sort and pdqsort with C and C++ API"]]></title><description><![CDATA[
<p>Since pdqsort (an older project of mine) was mentioned, I felt it wouldn't be entirely inappropriate to mention that I've since then collaborated with Lukas Bergdoll to provide two high-quality sort implementations for the Rust standard library, ipnsort (unstable) and driftsort (stable).<p>So if you use Rust, you get these by simply calling [T]::sort(_unstable). Great performance out of the box :)<p>On my machine (Apple M2), using the benchmarks from the repository on Apple clang 17 and Rust 1.98 nightly:<p><pre><code>    Sorting 50 million doubles:
    ipnsort             0.79s
    blqs                0.90s
    driftsort           1.13s   (stable)
    std::sort           1.22s
    std::stable_sort    4.64s   (stable)

    Sorting 50 million (i32, i32) structs:
    ipnsort             0.82s
    blqs                0.89s
    driftsort           1.07s   (stable)
    std::sort           3.09s
    std::stable_sort    3.15s   (stable)

</code></pre>
And now for a cool party trick, let's repeat the 50 million doubles experiment again, but have the first 90% already sorted, last 10% random:<p><pre><code>    driftsort           0.29s   (stable)
    ipnsort             0.81s
    std::sort           1.15s
    std::stable_sort    1.63s   (stable)
    blqs                1.89s</code></pre></p>
]]></description><pubDate>Thu, 04 Jun 2026 22:51:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=48405747</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48405747</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48405747</guid></item><item><title><![CDATA[New comment by orlp in "Should you normalize RGB values by 255 or 256?"]]></title><description><![CDATA[
<p>When going from float to u8 you should add a triangular dither. It makes a world of difference for grayscale gradients, even in 24bit truecolor.</p>
]]></description><pubDate>Tue, 02 Jun 2026 06:59:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48366936</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48366936</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48366936</guid></item><item><title><![CDATA[New comment by orlp in "Only 17% of all 64-bit Integers are products of two 32-bit integers"]]></title><description><![CDATA[
<p>The input space is 32 + 32 = 64 bits. The output space is 64 bits. So the best you can do is an 1-to-1 mapping.<p>However, since a * b = b * a, our input space has a lot of duplicate outputs. So from this alone you can conclude roughly half of the output space must be uncovered by any input pair, simply because there aren't enough input pairs.</p>
]]></description><pubDate>Mon, 01 Jun 2026 16:28:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48359058</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48359058</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48359058</guid></item><item><title><![CDATA[New comment by orlp in "Everything in C is undefined behavior"]]></title><description><![CDATA[
<p>There's typically only a performance penalty if the unaligned load spans a cache line on modern hardware.</p>
]]></description><pubDate>Wed, 20 May 2026 14:41:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=48208699</link><dc:creator>orlp</dc:creator><comments>https://news.ycombinator.com/item?id=48208699</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48208699</guid></item></channel></rss>