<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: phs2501</title><link>https://news.ycombinator.com/user?id=phs2501</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 07 Apr 2026 07:51:09 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=phs2501" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by phs2501 in "What Python’s asyncio primitives get wrong about shared state"]]></title><description><![CDATA[
<p>Not really.  It's certainly intended for the basic "fan out m tasks to n workers, and the fanout producer wants to know when they're all done" and can be abused for some more, but I don't think it does anything to help with the "consumer died, I want the producers to be able to know this rather than just continuing to push messages into a queue forever" case.<p>I've written wrappers to handle things the way I want, but it always feels like a bit of a hack.  (Usually I use a stop sentinal internally and reach inside to unbound the queue before I send it to avoid blocking).  Just wish it were built in.</p>
]]></description><pubDate>Fri, 06 Mar 2026 04:14:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=47270795</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=47270795</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47270795</guid></item><item><title><![CDATA[New comment by phs2501 in "10% of Firefox crashes are caused by bitflips"]]></title><description><![CDATA[
<p>For one thing, static vs dynamic RAM.  Static RAM (which is what's used for your typical CPU cache) is implemented with flip-flops and doesn't need to be refreshed, reads aren't destructive like DRAM, etc.</p>
]]></description><pubDate>Thu, 05 Mar 2026 23:31:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47268709</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=47268709</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47268709</guid></item><item><title><![CDATA[New comment by phs2501 in "What Python’s asyncio primitives get wrong about shared state"]]></title><description><![CDATA[
<p>The one thing I wish stock python queues had an option for (async or otherwise) was some kind of explicit termination.  e.g. be split into producers and consumers, and have consumers indicate iteration complete when all producers have finished (and vice versa - signal producers that all consumers have gone away).  You can kind of kludge around it in one direction with stop sentinals but it's a lot more awkward to deal with - especially if your queues are bounded as then you can get into the situation where you block trying to push the stop sentinal onto the queue as it's full.</p>
]]></description><pubDate>Thu, 05 Mar 2026 05:12:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47257822</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=47257822</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47257822</guid></item><item><title><![CDATA[New comment by phs2501 in "Giving C a superpower: custom header file (safe_c.h)"]]></title><description><![CDATA[
<p>I highly doubt (and some quick checks seem to verify that) any of the tiny CC implementations will support the cleanup extension that most of this post's magic hinges upon.<p>(Agree on your other points for what it's worth.)</p>
]]></description><pubDate>Mon, 17 Nov 2025 21:33:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=45958584</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=45958584</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45958584</guid></item><item><title><![CDATA[New comment by phs2501 in "Ishkur's Guide to Electronic Music"]]></title><description><![CDATA[
<p>That's what I get for stopping at the front page after it looked just like I remember.  :/<p>Thanks for the other link.</p>
]]></description><pubDate>Sun, 28 Sep 2025 07:32:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=45402440</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=45402440</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45402440</guid></item><item><title><![CDATA[New comment by phs2501 in "Ishkur's Guide to Electronic Music"]]></title><description><![CDATA[
<p>It still exists at <a href="https://archive.org/details/music_202007" rel="nofollow">https://archive.org/details/music_202007</a> .</p>
]]></description><pubDate>Sat, 27 Sep 2025 19:11:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=45398576</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=45398576</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45398576</guid></item><item><title><![CDATA[New comment by phs2501 in "Samsung now owns Denon, Bowers and Wilkins, Marantz, Polk, and more audio brands"]]></title><description><![CDATA[
<p>Usually that means the record was mastered differently (because you literally physically can't make a record as "loud" as a CD).<p>It's not the CD's fault, it's the mastering engineers.</p>
]]></description><pubDate>Sat, 27 Sep 2025 15:16:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=45396436</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=45396436</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45396436</guid></item><item><title><![CDATA[New comment by phs2501 in "Xmonad seeking help for Wayland port (2023)"]]></title><description><![CDATA[
<p>That's... fine, and a cool trick I guess, but I don't actually want that behavior.</p>
]]></description><pubDate>Sun, 21 Sep 2025 18:05:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=45325138</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=45325138</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45325138</guid></item><item><title><![CDATA[New comment by phs2501 in "Xmonad seeking help for Wayland port (2023)"]]></title><description><![CDATA[
<p>Does anyone know of a Wayland WM/compositor that does multi-screen like XMonad?  Preferably out of the box but I'll take configurable.<p>For those unaware, though I doubt you're reading this thread if so, I want n desktops that are shared between all screens, not desktops _assigned_ to particular screens.  If I summon a desktop on screen 1 and it's currently displayed on screen 2, they should swap.<p>Ideally also does layouts kind of like xmonad too, not "here's a tiling tree structure and a bunch of commands to manually manage it".</p>
]]></description><pubDate>Sat, 20 Sep 2025 05:43:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=45310736</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=45310736</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45310736</guid></item><item><title><![CDATA[New comment by phs2501 in "UUIDv47: Store UUIDv7 in DB, emit UUIDv4 outside (SipHash-masked timestamp)"]]></title><description><![CDATA[
<p>I just taught myself to look at the end of the UUID, rather than the beginning.</p>
]]></description><pubDate>Wed, 17 Sep 2025 19:46:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=45280549</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=45280549</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45280549</guid></item><item><title><![CDATA[New comment by phs2501 in "ZFS 2.3 released with ZFS raidz expansion"]]></title><description><![CDATA[
<p>I believe Synology runs btrfs on top of regular mdraid + lvm, possibly with patches to let btrfs checksum failures reach into the underlying layers to find the right data to recover.<p>Related blog post:  <a href="https://daltondur.st/syno_btrfs_1/" rel="nofollow">https://daltondur.st/syno_btrfs_1/</a></p>
]]></description><pubDate>Tue, 14 Jan 2025 20:46:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=42703608</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=42703608</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42703608</guid></item><item><title><![CDATA[New comment by phs2501 in "New iMac with M4"]]></title><description><![CDATA[
<p>For something that's literally designed to sit on a desk, yes... it's ridiculous to make it thinner in a dimension you never see vs one that you see all the time.</p>
]]></description><pubDate>Mon, 28 Oct 2024 15:29:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=41972073</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=41972073</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41972073</guid></item><item><title><![CDATA[New comment by phs2501 in "New iMac with M4"]]></title><description><![CDATA[
<p>Why does this still have the ridiculous iMac chin?  Surely they can fit everything behind the screen at this point.</p>
]]></description><pubDate>Mon, 28 Oct 2024 15:26:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=41972017</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=41972017</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41972017</guid></item><item><title><![CDATA[New comment by phs2501 in "Rust panics under the hood, and implementing them in .NET"]]></title><description><![CDATA[
<p>Yeah it was specifically the (presumed) lack of Rust's "fearless" concurrency that I was referring to... i.e. we can ram this data through a parallel map, but is it actually safe to do?<p>(And of course the flip side of Rust here is that you need to be able to figure out how to represent your code and data to make it happy, which provides new and interesting limitations to how you can write stuff without delving into "unsafe" territory...  something something TANSTAAFL)<p>Good info though; thanks!</p>
]]></description><pubDate>Tue, 24 Sep 2024 20:22:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=41640505</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=41640505</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41640505</guid></item><item><title><![CDATA[New comment by phs2501 in "Rust panics under the hood, and implementing them in .NET"]]></title><description><![CDATA[
<p>Rust is a step sideways if anything.  Yeah, you don't have manual memory management headaches in .NET, but you also don't have Rust's fairly strong compile-time guarantees about memory sharing and thread safety.<p>Which enables stuff like rayon where you can basically blindly replace map with parallel map and if it compiles, it _should_ be safe to run.<p>(I'm not super familiar with the .NET ecosystem, so it's quite possible there's equivalent tooling for enforced thread safety.  I haven't heard much about it though, if so.)</p>
]]></description><pubDate>Mon, 23 Sep 2024 20:40:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=41630282</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=41630282</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41630282</guid></item><item><title><![CDATA[New comment by phs2501 in "Ask HN: Does anyone use sound effects in their dev environment?"]]></title><description><![CDATA[
<p>A local station had (I think past tense, though it made it a lot less likely for me to go there to check) their pumps playing ads in "attract mode" when nobody was using them.  So going there late at night and filling up involved listening to a poorly-timed round of "BUY NOW" utterances from eight different sources (because of course they weren't synchronized).  And you couldn't really mute it because it was all the <i>other</i> pumps.<p>It was horrible.</p>
]]></description><pubDate>Mon, 16 Sep 2024 15:13:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=41556896</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=41556896</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41556896</guid></item><item><title><![CDATA[New comment by phs2501 in "Ubuntu 24.10 to Default to Wayland for Nvidia Users"]]></title><description><![CDATA[
<p>Same, which is one reason I'm dreading the eventual Xpocalypse, as I have not found a drop-in replacement for Xmonad in the Wayland universe.  (Particularly, the way Xmonad deals with multiple monitors and desktops just makes sense to me.)</p>
]]></description><pubDate>Mon, 20 May 2024 01:34:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=40411205</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=40411205</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40411205</guid></item><item><title><![CDATA[New comment by phs2501 in "An Exploration of SBCL Internals (2020)"]]></title><description><![CDATA[
<p>CMUCL's interpreter evaluated IR1 (the first intermediate representation of its compiler) IIRC, so it wasn't possible to have a truly compilerless CMUCL _and_ a functional EVAL.  I believe this IR1 interpreter was dropped from SBCL very early on.  When SBCL gained an interpreter again it was a simple metacircular evaluator a la SICP that was unrelated to anything inherited from CMUCL.  (This is all as of 15 or so years ago, I'm sure things have evolved since then!)</p>
]]></description><pubDate>Tue, 23 Apr 2024 05:02:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=40128681</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=40128681</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40128681</guid></item><item><title><![CDATA[New comment by phs2501 in "Show HN: Sqlbind a Python library to compose raw SQL"]]></title><description><![CDATA[
<p>I had my own take on this concept[1], though with considerably less language magic involved.  I imagine there's a lot of these kind of things running around.  My criteria were:<p>a) let me write actual SQL, not a python DSL that generates SQL<p>b) be placeholder-safe<p>c) be composable<p>Though it was somewhat intentionally limited to what I needed to support for my own needs at the time.<p>[1] <a href="https://github.com/bdowning/sql-athame">https://github.com/bdowning/sql-athame</a></p>
]]></description><pubDate>Mon, 26 Feb 2024 20:45:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=39516573</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=39516573</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39516573</guid></item><item><title><![CDATA[New comment by phs2501 in "Volkswagen, Porsche, and Audi say they will use Tesla's EV charging plug"]]></title><description><![CDATA[
<p>Pretty sure residential 3-phase in Europe is 400V phase-to-phase, it's 220V phase-to-neutral.</p>
]]></description><pubDate>Wed, 20 Dec 2023 16:25:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=38710371</link><dc:creator>phs2501</dc:creator><comments>https://news.ycombinator.com/item?id=38710371</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38710371</guid></item></channel></rss>