<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: cryptonector</title><link>https://news.ycombinator.com/user?id=cryptonector</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 16 Jun 2026 08:41:13 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=cryptonector" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by cryptonector in "Passing DBs through continuations"]]></title><description><![CDATA[
<p>This.  But TFA was specifically concerned with the relational algebra, so I'm giving it a pass :)</p>
]]></description><pubDate>Tue, 09 Jun 2026 19:00:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=48465900</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48465900</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48465900</guid></item><item><title><![CDATA[New comment by cryptonector in "Passing DBs through continuations"]]></title><description><![CDATA[
<p>The continuations in CPS are closures.  Goto basically isn't.  GCC's computed goto is, but generally when people say 'goto' they mean the traditional C goto, which involves no closures.  The goto analogy is not great for this reason.<p>A better analogy is that continuations are reified function call return addresses, since return addresses come with a frame pointer (explicit or implicit), and therefore are closure-like.</p>
]]></description><pubDate>Tue, 09 Jun 2026 15:26:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48462384</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48462384</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48462384</guid></item><item><title><![CDATA[New comment by cryptonector in "Looking Forward to Postgres 19: Query Hints"]]></title><description><![CDATA[
<p>The rejections over the years that I saw were not about design.</p>
]]></description><pubDate>Tue, 09 Jun 2026 15:12:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48462186</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48462186</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48462186</guid></item><item><title><![CDATA[New comment by cryptonector in "Surveillance is not safety: A statement on the UK's latest threat to privacy [pdf]"]]></title><description><![CDATA[
<p>But corporate devices can boot any OS you might like.<p>Sure, they have MEs that maybe you can't disable, but you can firewall them.<p>Server kit is just not like consumer kit.  Even laptops are [still, for now] a lot better than smartphones in this regard.</p>
]]></description><pubDate>Tue, 09 Jun 2026 04:54:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=48456607</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48456607</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48456607</guid></item><item><title><![CDATA[New comment by cryptonector in "Moving beyond fork() + exec()"]]></title><description><![CDATA[
<p>But some of that is nonsense and incorrect.  You can very much use local variables, and you'll find tons of vfork()-using code that does that and calls plenty of async-signal-safe functions.<p>The real restrictions are:<p><pre><code>  - you can't damage the function call frame
    of the caller of vfork(), thus you can't
    return from it

  - you may only call async-signal-safe
    functions on the child side of vfork()
</code></pre>
That's basically it.  Yes, you'll want to call execve(2) or _exit(2) before long, but there is no time limit as to that, it's just that the whole point of calling vfork() is to make it real cheap to spawn a process, which means ultimately calling execve(2), with _exit(2) being what you do if it execve(2) fails (e.g., because ENOENT).<p>There is a ton of vfork()-using code that adheres to these real restrictions and has been working fine for decades.  That includes several posix_spawn() implementations, the C shell, etc.<p>I demand evidence that this part: "the behavior is undefined if the process created by vfork() either modifies any data other than a variable of type pid_t used to store the return value from vfork()" is remotely true.  That evidence must be of the form of bug reports that were accepted and which stand to scrutiny.<p>I've never found any such evidence.  Have you?<p>Meanwhile I have a proof by existence that vfork() is safe used much more liberally than you say it may be used.<p>> You can't use local variables, or call any functions other than _exit or execve.<p>There are other async-signal-safe functions, and they get used routinely by posix_spawn() and other code to do child-side setup before execve(2), including: I/O redirection, process group setup, signal handling changes, etc.</p>
]]></description><pubDate>Tue, 09 Jun 2026 04:50:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=48456581</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48456581</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48456581</guid></item><item><title><![CDATA[New comment by cryptonector in "Surveillance is not safety: A statement on the UK's latest threat to privacy [pdf]"]]></title><description><![CDATA[
<p>But they are not walled gardens.</p>
]]></description><pubDate>Tue, 09 Jun 2026 04:43:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=48456521</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48456521</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48456521</guid></item><item><title><![CDATA[New comment by cryptonector in "We Think the SpaceX IPO Is Overvalued"]]></title><description><![CDATA[
<p>Nooo, not thaaat!!  We want traiiiins!!</p>
]]></description><pubDate>Tue, 09 Jun 2026 04:39:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=48456494</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48456494</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48456494</guid></item><item><title><![CDATA[New comment by cryptonector in "We Think the SpaceX IPO Is Overvalued"]]></title><description><![CDATA[
<p>> The Google founders are, lets say, more reliable than Musk when it comes to making sound business decisions.<p>I've no idea about that and I won't opine.  But every time I see that sort of statement it seems likely motivated by the whole Twitter acquisition.  Perhaps that was just a toy or vanity project for him, one he could afford, so even if you think he's running X terribly it might have nothing to do with how he's run or would run any other companies that are not related to social media.  In other words, what I read into such statements is "I don't like the politics he's brought to Twitter!", "the board should rein in the guy whose politics I don't like!!".  It's like saying Bezos is bad at business because he owns the Washington Post -another vanity project- and you don't like the Post.<p>Do people not get bored of that sort of take?<p>Tell me he makes bad business decisions all you want, but in the context of everyone-hates-his-acquisition-of-Twitter I'd like to hear about his other businesses.  Tell me something useful, not something political.<p>And, sure, politics at some point bleeds into business.  Maybe Trump is out to get Bezos over Washington Post coverage, or maybe the next Democrat President will go after Musk for his politics.  It's possible that X will eventually cost him dearly and personally, and it's a solid argument for these billionaires and trillionaires to stay out of politics.  Or maybe it's a good argument for them to stay in because maybe by demonstrating electoral influence and power they can make the POTUS-of-the-day fear them enough to not go after them too hard.  But if you made any such argument it still wouldn't say tell me anything about the rest of these billionaires' businesses.</p>
]]></description><pubDate>Tue, 09 Jun 2026 04:35:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=48456457</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48456457</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48456457</guid></item><item><title><![CDATA[New comment by cryptonector in "Surveillance is not safety: A statement on the UK's latest threat to privacy [pdf]"]]></title><description><![CDATA[
<p>We should all write on our devices private nastygrams to whomever is assigned to watching our devices.  The least we can do is mock them.</p>
]]></description><pubDate>Tue, 09 Jun 2026 04:15:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=48456313</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48456313</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48456313</guid></item><item><title><![CDATA[New comment by cryptonector in "Surveillance is not safety: A statement on the UK's latest threat to privacy [pdf]"]]></title><description><![CDATA[
<p>It isn't TPMs nor attestation nor DRM making this possible.  It isn't secure boot either.  It's walled gardens with secure boot -yes, secure boot- that the consumer can't bypass.  Secure booting isn't the problem in an enterprise setting -- of course we _want secure booting_ in the enterprise.  It's consumer devices that can't be jail-broken that are the problem.  Although even then, the silly age verification laws and the people pushing them don't even care if the OSes run on walled garden devices.</p>
]]></description><pubDate>Tue, 09 Jun 2026 04:12:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48456296</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48456296</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48456296</guid></item><item><title><![CDATA[New comment by cryptonector in "Looking Forward to Postgres 19: Query Hints"]]></title><description><![CDATA[
<p>> The advice language is surprisingly expressive for something the community resisted for decades.<p>FINALLY!<p>I like this design.<p>And yes, the community resisted this for way too long.</p>
]]></description><pubDate>Tue, 09 Jun 2026 04:09:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=48456274</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48456274</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48456274</guid></item><item><title><![CDATA[New comment by cryptonector in "Moving beyond fork() + exec()"]]></title><description><![CDATA[
<p>> > The received wisdom suggests that Unix’s unusual combination of fork() and exec() for process creation was an inspired design.<p>> No, it was done that way so that you could launch a program that was too big to fit in memory with the parent program.<p>Ironically vfork() is even better in this regard.  I wish Unix had only ever had vfork().</p>
]]></description><pubDate>Sun, 07 Jun 2026 05:17:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48432031</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48432031</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48432031</guid></item><item><title><![CDATA[New comment by cryptonector in "Moving beyond fork() + exec()"]]></title><description><![CDATA[
<p>Cygwin's fork() is similar to what you describe for QNX.</p>
]]></description><pubDate>Sun, 07 Jun 2026 05:16:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=48432029</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48432029</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48432029</guid></item><item><title><![CDATA[New comment by cryptonector in "Moving beyond fork() + exec()"]]></title><description><![CDATA[
<p>> something similar to vfork() but not bound by posix rules<p>POSIX says nothing much about vfork() anymore.  It was a mistake removing it.  Zealots failed to understand that vfork() >> fork().  <a href="https://news.ycombinator.com/item?id=30502392">https://news.ycombinator.com/item?id=30502392</a></p>
]]></description><pubDate>Sun, 07 Jun 2026 05:14:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=48432023</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48432023</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48432023</guid></item><item><title><![CDATA[New comment by cryptonector in "Moving beyond fork() + exec()"]]></title><description><![CDATA[
<p>> Basically vfork do a "stop the world".<p>vfork() does NOT stop the world in many / most implementations.  The ones that do stop the world do it because someone misunderstood the whole "vfork() stops the parent process" -- yes, it stops the parent process in a pre-threads world, but it doesn't have to stop any other threads but the one that called vfork().  Indeed, many implementations don't do that.<p>(Someone once tried to make NetBSD's vfork() stop the world because that's what the pre-threading man page said it does.  I did my utter best to keep that from happening at the time, and it didn't then.  Hopefully no one tried again later.)</p>
]]></description><pubDate>Sun, 07 Jun 2026 05:09:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48432007</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48432007</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48432007</guid></item><item><title><![CDATA[New comment by cryptonector in "Moving beyond fork() + exec()"]]></title><description><![CDATA[
<p>vfork() helps a LOT.  The restrictions on what you can do on the child-side of vfork() are pretty much the same ones as for fork() + you must not do anything to damage the stack frame of the vfork() caller (i.e., you can't return).</p>
]]></description><pubDate>Sun, 07 Jun 2026 05:07:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=48431997</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48431997</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48431997</guid></item><item><title><![CDATA[New comment by cryptonector in "Moving beyond fork() + exec()"]]></title><description><![CDATA[
<p><a href="https://gist.github.com/nicowilliams/a8a07b0fc75df05f684c23c18d7db234" rel="nofollow">https://gist.github.com/nicowilliams/a8a07b0fc75df05f684c23c...</a><p>Though I want a posix_spawn-as-a-system-call approach as well / instead of that.</p>
]]></description><pubDate>Sun, 07 Jun 2026 05:06:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=48431994</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48431994</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48431994</guid></item><item><title><![CDATA[New comment by cryptonector in "Moving beyond fork() + exec()"]]></title><description><![CDATA[
<p>Correct: it does NOT apply to vfork().</p>
]]></description><pubDate>Sun, 07 Jun 2026 05:05:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=48431988</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48431988</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48431988</guid></item><item><title><![CDATA[New comment by cryptonector in "Moving beyond fork() + exec()"]]></title><description><![CDATA[
<p>Ah, my one time on the HN front-page: Fork() is evil; vfork() is goodness; afork() would be better; clone() is stupid (<a href="https://news.ycombinator.com/item?id=30502392">https://news.ycombinator.com/item?id=30502392</a>).</p>
]]></description><pubDate>Sun, 07 Jun 2026 05:04:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=48431984</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=48431984</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48431984</guid></item><item><title><![CDATA[New comment by cryptonector in "Claude Code Routines"]]></title><description><![CDATA[
<p>Oof, running Claude Code automatically on PRs is scary.</p>
]]></description><pubDate>Wed, 15 Apr 2026 05:15:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=47774940</link><dc:creator>cryptonector</dc:creator><comments>https://news.ycombinator.com/item?id=47774940</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47774940</guid></item></channel></rss>