<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: munch117</title><link>https://news.ycombinator.com/user?id=munch117</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 06 Apr 2026 06:41:22 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=munch117" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by munch117 in "C# strings silently kill your SQL Server indexes in Dapper"]]></title><description><![CDATA[
<p>Making a plan that works for the general case, but is also efficient, is rather trivial. Here's pseudocode from spending two minutes on the problem:<p><pre><code>    # INPUT: lookfor: unicode
    var lower, upper: ascii
    lower = ascii_lower_bound(lookfor)
    upper = ascii_upper_bound(lookfor)
    for candidate:ascii in index_lookup(lower .. upper):
        if expensive_correct_compare_equal(candidate.field, lookfor):
            yield candidate
</code></pre>
The magic is to have functions ascii_lower_bound and ascii_upper_bound, that compute an ASCII string such that all ASCII strings that compare smaller (greater) cannot be equal to the input.  Those functions are not hard to write.  Although you might have to implement versions for each supported locale-dependent text comparison algorithm, but still, not a big deal.<p>Worst case, 'lower' and 'upper' span the whole table - could happen if you have some really gnarly string comparison rules to deal with. But then you're no worse off than before. And most of the time you'll have lower==upper and excellent performance.</p>
]]></description><pubDate>Sat, 07 Mar 2026 08:59:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47285878</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=47285878</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47285878</guid></item><item><title><![CDATA[New comment by munch117 in "IBM tripling entry-level jobs after finding the limits of AI adoption"]]></title><description><![CDATA[
<p>> Just clearly state your requirements.<p>Nothing new here.  Getting users to clearly state their requirements has always been like pulling teeth.  Incomplete sentences and all.<p>If the people you are teaching are developers, they should know better.  But I'm not all that surprised if many of them don't.  People will be people.</p>
]]></description><pubDate>Sun, 15 Feb 2026 12:23:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=47023148</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=47023148</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47023148</guid></item><item><title><![CDATA[New comment by munch117 in "Babylon 5 is now free to watch on YouTube"]]></title><description><![CDATA[
<p>TNG, by a country mile.  B5 has "writer identifies too much with the main character" written all over it.  It's the story of how Our Great Leader does the right thing and saves the world, over and over again.</p>
]]></description><pubDate>Sat, 14 Feb 2026 09:36:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47013103</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=47013103</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47013103</guid></item><item><title><![CDATA[New comment by munch117 in "The Day the Telnet Died"]]></title><description><![CDATA[
<p>I was reading <a href="https://www.offsec.com/blog/cve-2026-24061/" rel="nofollow">https://www.offsec.com/blog/cve-2026-24061/</a>, which implies that precisely that single long string passes through getenv("USER") in the attack.  The mystery is how that single long string in telnetd becomes two separate arguments for login.  execv or posix_spawn certainly won't do that.  So either there's a version of /usr/bin/login that parses arguments in some very sus way, or there's a shell involved somehow.</p>
]]></description><pubDate>Wed, 11 Feb 2026 20:32:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=46980508</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=46980508</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46980508</guid></item><item><title><![CDATA[New comment by munch117 in "The Day the Telnet Died"]]></title><description><![CDATA[
<p>I'm slightly taken aback by the telnetd fix: The solution to the username "-f root" being interpreted as two arguments to /usr/bin/login is to add a "sanitize" function, really?  I'm not seeing the sense in that.  Surely in any case where the sanitize functions changes something, the login will fail.  Better to error out early than to sanitize and try to hobble along.<p>What I'd like to know is how the arguments get interpreted like that in the first place. If I try giving that kind of argument /usr/bin/login directly, its argument parser chides me:<p><pre><code>  $ login '-f root'
  login: illegal option --  
</code></pre>
What's telnetd doing differently?  Is it invoking login via a shell?</p>
]]></description><pubDate>Wed, 11 Feb 2026 18:01:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46978431</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=46978431</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46978431</guid></item><item><title><![CDATA[New comment by munch117 in "“You should never build a CMS”"]]></title><description><![CDATA[
<p>> Also worth noting that the author never actually stated that they did not use generative AI for this article.<p>I expect that they did in some small way, especially considering the source.<p>But not to an extent where it was anywhere near as relevant as the actual points being made. "Please don't complain about tangential annoyances,", the guidelines say.<p>I don't mind at all that it's pointed out when an article is nothing more than AI ponderings.  Sure, call out AI fluff, and in particular, call out an article that might contain incorrect confabulated information.  This just wasn't that.</p>
]]></description><pubDate>Mon, 15 Dec 2025 17:43:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=46277729</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=46277729</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46277729</guid></item><item><title><![CDATA[New comment by munch117 in "“You should never build a CMS”"]]></title><description><![CDATA[
<p>I struggled a bit with what to point to as signs that it's not an LLM conception.  Someone else had commented on the headlines as something that was AI-like, and since I could easily imagine a writing process that would lead to headlines like that, that's what I chose.  A little too confidently perhaps, sorry.<p>But actually, I think I shouldn't have needed to identify any signs.  It's the people claiming something's the work of an LLM based on little more than gut feelings, that should be asked to provide more substance. The length of sentences? Number of bullet points? That's really thin.</p>
]]></description><pubDate>Sun, 14 Dec 2025 21:49:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=46267336</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=46267336</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46267336</guid></item><item><title><![CDATA[New comment by munch117 in "“You should never build a CMS”"]]></title><description><![CDATA[
<p>This article is just about as un-AI written as anything I've ever read.  The headings are clearly just the outline that he started with.  An outline with a clear concept for the story that he's trying to tell.<p>I'm beginning to wonder how many of the "This was written by AI!" comments are AI-generated.</p>
]]></description><pubDate>Sun, 14 Dec 2025 09:54:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=46261973</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=46261973</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46261973</guid></item><item><title><![CDATA[New comment by munch117 in "Async and Finaliser Deadlocks"]]></title><description><![CDATA[
<p>A __del__ that does any kind of real work is asking for trouble. Use it to print a diagnostic reminding you to call .close() or .join() or use a with statement, and nothing else.  For example:<p><pre><code>    def close(self):
        self._closed = True
        self.do_interesting_finalisation_stuff()
    def __del__(self):
        if not self._closed:
            print("Programming error! Forgot to .close()", self)
</code></pre>
If you do anything the slightest bit more interesting than that in your __del__, then you are likely to regret it.<p>Every time I've written a __del__ that did more, it has been trouble and I've ended up whittling it down to a simple diagnostic.  With one notable exception: A __del__ that put a termination notification into a queue.Queue which a different thread was listening to.  That one worked great: If the other thread was still alive and listening, then it would get the message. If not, then the message would just get garbage-collected with the Queue, but message would be redundant anyway, so that would be fine.</p>
]]></description><pubDate>Wed, 12 Nov 2025 21:36:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=45907087</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=45907087</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45907087</guid></item><item><title><![CDATA[New comment by munch117 in "John Searle has died"]]></title><description><![CDATA[
<p>> If you think you disagree with him (as I once did), please consider the possibility that you've only been exposed to an ersatz characterization of his argument.<p>My first exposure was a video of Searle himself explaining the Chinese room argument.<p>It came across as a claim that a whole can never be more than its parts.  It made as much sense as claiming that a car cannot possibly drive, as it consists of parts that separately cannot drive.</p>
]]></description><pubDate>Mon, 13 Oct 2025 16:39:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=45570406</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=45570406</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45570406</guid></item><item><title><![CDATA[New comment by munch117 in "What If OpenDocument Used SQLite?"]]></title><description><![CDATA[
<p>Ah, I missed that 9.a-c were alternatives.  And that, in the absence of custom tables or functions, they are merely defense in depth for something that is already secure, barring bugs.  I withdraw my concern.</p>
]]></description><pubDate>Fri, 05 Sep 2025 11:04:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=45137223</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=45137223</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45137223</guid></item><item><title><![CDATA[New comment by munch117 in "What If OpenDocument Used SQLite?"]]></title><description><![CDATA[
<p>I'm not that concerned with bugs in sqlite.  sqlite is high quality software, and the application that uses it is a more likely source of vulnerabilities.<p>But I do see a problem if you really need to use a sqlite that's compiled with particular non-default options.<p>Say I design a file format and implement it, and my implementation uses an sqlite library that's compiled with all the right options.  Then I evangelize my file format, telling everyone that it's really just an sqlite database and sooo easy to work with.<p>First thing that happens is that someone writes a neat little utility for working with the files, written in language X, which comes with a handy sqlite3 library.  But that library is not compiled with the right options, and boom, you have a vulnerable utility.</p>
]]></description><pubDate>Fri, 05 Sep 2025 07:59:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=45136120</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=45136120</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45136120</guid></item><item><title><![CDATA[New comment by munch117 in "Indices, not Pointers"]]></title><description><![CDATA[
<p>You have just reinvented the slab allocator.</p>
]]></description><pubDate>Wed, 03 Sep 2025 06:28:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=45112814</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=45112814</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45112814</guid></item><item><title><![CDATA[New comment by munch117 in "Intermittent fasting correlated with increased risk of cardiovascular disease"]]></title><description><![CDATA[
<p>15 years ago, was intermittent fasting even a thing back then?  I wonder how many of the people eating within an 8 hour window didn't do it because of a diet, but instead because of an eating disorder or some other disease.</p>
]]></description><pubDate>Sun, 31 Aug 2025 09:46:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=45081873</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=45081873</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45081873</guid></item><item><title><![CDATA[New comment by munch117 in "Show HN: Wordle-style game for Fermi questions"]]></title><description><![CDATA[
<p>Thank you for making this.<p>I have an idea for a gameplay that I think I would enjoy more:<p><pre><code>  - If the first guess is within a factor of sqrt(10), then you win.
  - If not, you are given two choices for the second guess: Up or down.
  - Up and down are 10x higher and lower guesses (making them adjacent ranges to the first guess).
  - If the second guess is wrong, you lose. No more guesses.
</code></pre>
The point is that the second guess makes you rethink the original question once more, to figure out what it was that you missed.  Which is more fun that doing bisection.<p>I wrote 10x and sqrt(10) to make a game literally about orders of magnitude, but you could of course you smaller numbers, like 4x and sqrt(4), to make it harder.</p>
]]></description><pubDate>Sat, 02 Aug 2025 20:53:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=44771377</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=44771377</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44771377</guid></item><item><title><![CDATA[New comment by munch117 in "Hacking Coroutines into C"]]></title><description><![CDATA[
<p>Not only that, the compiler's optimizer might actually do a <i>better</i> job if you split up a big function.  Because the smaller functions have less register pressure.</p>
]]></description><pubDate>Sun, 13 Jul 2025 08:12:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=44548486</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=44548486</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44548486</guid></item><item><title><![CDATA[New comment by munch117 in "The story behind Caesar salad"]]></title><description><![CDATA[
<p>> What does this sentence even mean?<p>Apologies for my non-native English.  I'll try putting more words on it and maybe it will come out less convoluted.<p>It's easier to eat a lot of salad when it's finely cut.  Then you just shovel in a portion  with a bit of everything with every grab of the fork or spoon.  With a large piece of lettuce, you need to cut it first, and then stab the piece with the fork, and then combine with other ingredients.  Which makes eating that kind of salad a slow process.  That's what I meant by "suited for slow nibbling of token amounts".</p>
]]></description><pubDate>Sat, 05 Jul 2025 18:17:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=44474501</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=44474501</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44474501</guid></item><item><title><![CDATA[New comment by munch117 in "OBBB signed: Reinstates immediate expensing for U.S.-based R&D"]]></title><description><![CDATA[
<p>If I'm understanding this correctly then this is about a tax disincentive, making it more expensive for US companies to poach R&D talent from other countries.<p>Not all countries will see that as a problem.</p>
]]></description><pubDate>Sat, 05 Jul 2025 09:41:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=44471426</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=44471426</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44471426</guid></item><item><title><![CDATA[New comment by munch117 in "The story behind Caesar salad"]]></title><description><![CDATA[
<p>It is precisely a salad for people who don't generally eat salads.<p>The big uncut leaves are suited for slow nibbling of token amounts of salad.<p>Croutons are recognizable from a distance as a non vegetable ingredient, making it attractive to someone who'd rather not eat vegetables at all.  To me they're just stale bread.</p>
]]></description><pubDate>Sat, 05 Jul 2025 08:41:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=44471142</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=44471142</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44471142</guid></item><item><title><![CDATA[New comment by munch117 in "OpenAI charges by the minute, so speed up your audio"]]></title><description><![CDATA[
<p>I use a bookmarklet:<p>javascript:void%20function(){document.querySelector(%22video,audio%22).playbackRate=parseFloat(prompt(%22Set%20the%20playback rate%22))}();</p>
]]></description><pubDate>Wed, 25 Jun 2025 18:27:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=44380424</link><dc:creator>munch117</dc:creator><comments>https://news.ycombinator.com/item?id=44380424</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44380424</guid></item></channel></rss>