<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: gpderetta</title><link>https://news.ycombinator.com/user?id=gpderetta</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 01 Oct 2026 18:17:59 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=gpderetta" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by gpderetta in "The End of a Fair Price: Dynamic Pricing and the Normalization of Gouging"]]></title><description><![CDATA[
<p>> This is not much different from an auto insurance company raising your rates (or cancelling coverage) because you've received a number of speeding tickets<p>This is more like your insurer following you around and evaluating your driving skills.<p>And yes black boxes are a thing but a) are opt-in and b) universally reviled.</p>
]]></description><pubDate>Tue, 29 Sep 2026 19:08:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=49898781</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49898781</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49898781</guid></item><item><title><![CDATA[New comment by gpderetta in "Book review: Is parallel programming hard, and, if so, what can you do about it?"]]></title><description><![CDATA[
<p>I would say that classical simd with explicit vector registers is plain parallelism, not concurrency. You can build concurrent abstractions on top of it (ISPC, any of the high level GPU languages), but when you move beyond simple simd hardware and have multiple hardware threads executing simd groups on multiple cpus, possibly with the ability to migrate threads between groups, the strong synchronization is a bit lost. But I'll admit I'm not an expert.</p>
]]></description><pubDate>Tue, 29 Sep 2026 11:00:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=49891141</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49891141</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49891141</guid></item><item><title><![CDATA[New comment by gpderetta in "Book review: Is parallel programming hard, and, if so, what can you do about it?"]]></title><description><![CDATA[
<p>how do you implement, for example, a general purpose OS kernel without concurrency?<p>For some tasks, the static scheduling you described is appropriate (although you could still consider it a form of concurrency), but it needs complete cooperation between tasks and an overall design.<p>But as soon as you need some sort of fairness, responsiveness, and tasks that are not designed for full cooperation if not outright hostile, you need not only concurrency, but full preemption.</p>
]]></description><pubDate>Tue, 29 Sep 2026 10:54:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=49891089</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49891089</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49891089</guid></item><item><title><![CDATA[New comment by gpderetta in "Book review: Is parallel programming hard, and, if so, what can you do about it?"]]></title><description><![CDATA[
<p>So I actually had this exact issue where we suspected a deadlock, but the application was limping along and we couldn't justify attaching a debugger. I managed to confirm my suspicions with judicious use of perf and /proc/<pid>/task/<tid>/wchan .</p>
]]></description><pubDate>Fri, 25 Sep 2026 09:52:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=49842285</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49842285</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49842285</guid></item><item><title><![CDATA[New comment by gpderetta in "Book review: Is parallel programming hard, and, if so, what can you do about it?"]]></title><description><![CDATA[
<p>... until you realize you can have race conditions with queues as as well.</p>
]]></description><pubDate>Fri, 25 Sep 2026 08:53:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=49841872</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49841872</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49841872</guid></item><item><title><![CDATA[New comment by gpderetta in "Book review: Is parallel programming hard, and, if so, what can you do about it?"]]></title><description><![CDATA[
<p>ah, that's probably a missed wakeup problem! Much nastier. Still seeing where your thread is blocked might hint you to where the missing signal should have been.</p>
]]></description><pubDate>Fri, 25 Sep 2026 08:53:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=49841867</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49841867</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49841867</guid></item><item><title><![CDATA[New comment by gpderetta in "Book review: Is parallel programming hard, and, if so, what can you do about it?"]]></title><description><![CDATA[
<p>Agree completely. But they become harder when you eschew standard constructs like threads and mutexes and bring-your-own losing nice things like debugger supports and stack traces. Now your logical tasks might be deadlocked, while your threads appear to be running correctly. This is surprisingly common this day with async runtimes and less than stellar debugging support.</p>
]]></description><pubDate>Fri, 25 Sep 2026 08:52:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=49841861</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49841861</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49841861</guid></item><item><title><![CDATA[New comment by gpderetta in "Book review: Is parallel programming hard, and, if so, what can you do about it?"]]></title><description><![CDATA[
<p>deterministic scheduling is possible, but most theoretical concurrency models assume non-determinism.<p>And even with deterministic scheduling, concurrency might be dictated by external stimuli (for example request arrival) that are not deterministic.</p>
]]></description><pubDate>Fri, 25 Sep 2026 08:47:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=49841833</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49841833</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49841833</guid></item><item><title><![CDATA[New comment by gpderetta in "Book review: Is parallel programming hard, and, if so, what can you do about it?"]]></title><description><![CDATA[
<p>> True concurrency that is absolutely absent of parallelism is a bit pointless<p>It is very important in interactive or realtime systems.</p>
]]></description><pubDate>Fri, 25 Sep 2026 08:45:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=49841819</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49841819</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49841819</guid></item><item><title><![CDATA[New comment by gpderetta in "Book review: Is parallel programming hard, and, if so, what can you do about it?"]]></title><description><![CDATA[
<p>> concurrency without parallelism is usually cooperative<p>preemptive concurrency is almost as old as interactive computers. Until fairly recently, most computers were single core, but you wouldn't have wanted to use a cooperatively scheduled OS [1], especially on a multiuser machine.<p>[1] yes, in the '80s some popular microcomputer OSs were single threaded (DOS) or cooperatively scheduled (classic macos and 16bit windows), but even then preemptive OSs were available (amigados).</p>
]]></description><pubDate>Fri, 25 Sep 2026 08:43:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=49841812</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49841812</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49841812</guid></item><item><title><![CDATA[New comment by gpderetta in "When the Debugger Lies"]]></title><description><![CDATA[
<p>C++ is the same as C here. In fact enums with no values are an idiomatic way to have strong integer typedefs.</p>
]]></description><pubDate>Fri, 25 Sep 2026 08:35:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=49841757</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49841757</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49841757</guid></item><item><title><![CDATA[New comment by gpderetta in "When the Debugger Lies"]]></title><description><![CDATA[
<p>At the very least that would warrant an explicit std::abort() or std::unreachable() at the end (or the C equivalent).</p>
]]></description><pubDate>Fri, 25 Sep 2026 08:34:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=49841746</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49841746</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49841746</guid></item><item><title><![CDATA[New comment by gpderetta in "C++26: Trivial infinite loops are no longer undefined behaviour"]]></title><description><![CDATA[
<p>one could already add loads off a volatile and portably prevent the loop from being optimized. But there was already a lot of existing embedded code that had this sort of loop, (and more will be written as it is an existing idiom) which the committee wanted to un-break.</p>
]]></description><pubDate>Fri, 18 Sep 2026 22:33:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=49761147</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49761147</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49761147</guid></item><item><title><![CDATA[New comment by gpderetta in "C++26: Trivial infinite loops are no longer undefined behaviour"]]></title><description><![CDATA[
<p>As the only observable behaviour of this_thread::yield is forward progress, because of the as-if rule, the compiler doesn't actually need to replace the loop, when running on a runtime that guarantees preemption. That's the case when std::threads are backed by kernel threads. On a M:N implementation, then yes, a yield would need to be added, but that would be desirable.<p>Interestingly, posix realtime FIFO scheduling doesn't preempt even on kernel thread based implementations, so one reading of the standard would require yield on this case. But that can actually be potentially catastrophic as FIFO scheduling is expected to be deterministic. But realtime scheduling is already beyond the standard: I doubt gcc and clang will do the transformation by default.<p>In practice the equivalence is necessary to make some obscure corner of the memory model work and prevent some undesirable optimizations;  I expect that in practice the compilers, if they implement this at all, will provide an opt-in flag, but they will optimize as-if the call was there.</p>
]]></description><pubDate>Fri, 18 Sep 2026 22:08:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=49760888</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49760888</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49760888</guid></item><item><title><![CDATA[New comment by gpderetta in "Subnormal floating-point numbers are expensive on Intel processors"]]></title><description><![CDATA[
<p>right, but the issue was that if an application was linked with a library that happened to link with a fast-math shared library, it would unknowingly bring along the crt code. Now the only way to get it is to use the fast-math flag when linking the final binary, which at least is an explicit request.</p>
]]></description><pubDate>Fri, 18 Sep 2026 21:56:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=49760806</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49760806</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49760806</guid></item><item><title><![CDATA[New comment by gpderetta in "Subnormal floating-point numbers are expensive on Intel processors"]]></title><description><![CDATA[
<p>IEEE 754 defines bit exact results for a lot of FP operations, including denormals.</p>
]]></description><pubDate>Fri, 18 Sep 2026 15:07:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=49755474</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49755474</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49755474</guid></item><item><title><![CDATA[New comment by gpderetta in "Subnormal floating-point numbers are expensive on Intel processors"]]></title><description><![CDATA[
<p>larger SIMD ALUs, which also have been around for longer?</p>
]]></description><pubDate>Fri, 18 Sep 2026 15:06:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=49755460</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49755460</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49755460</guid></item><item><title><![CDATA[New comment by gpderetta in "Subnormal floating-point numbers are expensive on Intel processors"]]></title><description><![CDATA[
<p>IIRC that has been since split out of the flag and need to be asked for separately at link time.</p>
]]></description><pubDate>Fri, 18 Sep 2026 15:05:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=49755440</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49755440</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49755440</guid></item><item><title><![CDATA[New comment by gpderetta in "Fujitsu launches made-in-Japan next-generation CPU FUJITSU-MONAKA"]]></title><description><![CDATA[
<p>Fujitsu has a long history of designing their own micro but using a standard ISA for HPC. Used to be SPARC, now it is ARM. IIRC Fujitsu were the main architects behind the SVE ARM extension.</p>
]]></description><pubDate>Thu, 17 Sep 2026 15:42:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=49742473</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49742473</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49742473</guid></item><item><title><![CDATA[New comment by gpderetta in "Implementation of GCC's Nested Functions (vs. C++ Lambdas)"]]></title><description><![CDATA[
<p>Things get complicated when a lambda that capture by reference is capturing things that are not on a single stack frame (or a stack frame at all). Then you have references to references. You could rely on the optimizer, but the capture has ABI implications.</p>
]]></description><pubDate>Wed, 09 Sep 2026 09:26:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=49623666</link><dc:creator>gpderetta</dc:creator><comments>https://news.ycombinator.com/item?id=49623666</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49623666</guid></item></channel></rss>