<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: xscott</title><link>https://news.ycombinator.com/user?id=xscott</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 25 Apr 2026 16:24:34 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=xscott" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by xscott in "Claude struggles to cope with ChatGPT exodus"]]></title><description><![CDATA[
<p>Thank you for this.  I had Antigravity already but was thinking of cancelling it because Gemini frustrates me.  Using it with Claude though was very impressive.  I burned through my token budget in about 5 hours though.</p>
]]></description><pubDate>Thu, 12 Mar 2026 21:47:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=47357659</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=47357659</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47357659</guid></item><item><title><![CDATA[New comment by xscott in "Claude struggles to cope with ChatGPT exodus"]]></title><description><![CDATA[
<p>That is interesting, and thank you.<p>I've had a list of pet projects that I've been adding to for years.  For those, I just say the broad strokes and tell it to do it's best.  Codex has done a really good job for most of them, sometimes in one shot, and my list of experiments is emptying.  Only one notable exception where it had no idea what I was after.<p>I also have my larger project, which I hope to actually keep and use it.  Same thing though, it's really hard to explain what's going on, and it acts on bad assumptions.<p>So if Claude is better at that, then having two tools makes a lot of sense to me.</p>
]]></description><pubDate>Tue, 10 Mar 2026 04:09:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47319016</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=47319016</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47319016</guid></item><item><title><![CDATA[New comment by xscott in "Claude struggles to cope with ChatGPT exodus"]]></title><description><![CDATA[
<p>Can you expand on that.  I've been wanting to try Claude for a while, but their payment processing wouldn't take any of my credit cards (they work everywhere else, so it's not the cards).  I've heard I can work around this by installing their mobile app or something, but it was extra hurdles, so I didn't try very hard.<p>And I've been absolutely amazed with Codex.  I started using that with version ChatGPT 5.3-Codex, and it was so much better than online ChatGPT 5.2, even sticking to single page apps which both can do.  I don't have any way to measure the "smarts" for of the new 5.4, but it seems similar.<p>Anyways, I'll try to get Claude running if it's better in some significant way.  I'm happy enough the the Codex GUI on MacOS, but that's just one of several things that could be different between them.</p>
]]></description><pubDate>Sun, 08 Mar 2026 18:30:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47299717</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=47299717</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47299717</guid></item><item><title><![CDATA[New comment by xscott in "The Lobster Programming Language"]]></title><description><![CDATA[
<p>I think it would be cool if a language specifically for LLMs came about.  It should have something like required preconditions and postconditions so that a deterministic compiler can verify the assumptions the LLM is claiming.  Something like a theorem prover, but targeted specifically for programming and efficient compilation/runtime.  And it doesn't need all the niceties human programmers tend to prefer (implicit conversions comes to mind).</p>
]]></description><pubDate>Sun, 08 Mar 2026 12:46:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47296887</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=47296887</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47296887</guid></item><item><title><![CDATA[New comment by xscott in "How I use Claude Code: Separation of planning and execution"]]></title><description><![CDATA[
<p>Of course I can't be certain, but I think the "mixture of experts" design plays into it too.  Metaphorically, there's a mid-level manager who looks at your prompt and tries to decide which experts it should be sent to.  If he thinks you won't notice, he saves money by sending it to the undergraduate intern.<p>Just a theory.</p>
]]></description><pubDate>Sun, 22 Feb 2026 04:31:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=47108184</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=47108184</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47108184</guid></item><item><title><![CDATA[New comment by xscott in "Stephen Colbert says CBS forbid interview of Democrat because of FCC threat"]]></title><description><![CDATA[
<p>Language changes over time, and I remember recent memes where a cute girl says something like "claiming you're moderate means you know conservatives don't get laid" (presumably because of abortion politics).  It makes me wonder if the moderates actually became liberal or if they just don't want to use that word any more.<p>After all the polarism in "reality show politics", my diehard liberal friends seem less liberal to me, but they'll state which team they're on more fervently than ever.</p>
]]></description><pubDate>Tue, 17 Feb 2026 22:21:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=47054258</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=47054258</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47054258</guid></item><item><title><![CDATA[New comment by xscott in "What every compiler writer should know about programmers (2015) [pdf]"]]></title><description><![CDATA[
<p>Very simple code is UB:<p><pre><code>    int handle_untrusted_numbers(int a, int b) {
        if (a < 0) return ERROR_EXPECTED_NON_NEGATIVE;
        if (b < 0) return ERROR_EXPECTED_NON_NEGATIVE;
        int sum = a + b;
        if (sum < 0) {
            return ERROR_INTEGER_OVERFLOW;
        }
        return do_something_important_with(sum);
    }
</code></pre>
Every computer you will ever use has two's complement for signed integers, and the standard recently recognized and codified this fact.  However, the UB fanatics (heretics) insisted that not allowing signed overflow is an important opportunity for optimizations, so that last if-statement can be deleted by the compiler and your code quietly doesn't check for overflow any more.<p>There are plenty more examples, but I think this is one of the simplest.</p>
]]></description><pubDate>Tue, 17 Feb 2026 16:41:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=47049467</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=47049467</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47049467</guid></item><item><title><![CDATA[New comment by xscott in "AI isn't "just predicting the next word" anymore"]]></title><description><![CDATA[
<p>For or against, I don't know why the "just predicting" or "stochastic parrots" criticism was ever insightful.  People make one word after another and frequently repeat phrases they heard elsewhere.  It's kind of like criticizing a calculator for making one digit after another.</p>
]]></description><pubDate>Tue, 13 Jan 2026 21:08:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=46608049</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=46608049</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46608049</guid></item><item><title><![CDATA[New comment by xscott in "Rob Pike goes nuclear over GenAI"]]></title><description><![CDATA[
<p>No, but in this case it indicates some hypocrisy.</p>
]]></description><pubDate>Fri, 26 Dec 2025 15:23:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46392950</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=46392950</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46392950</guid></item><item><title><![CDATA[New comment by xscott in "Perl's decline was cultural"]]></title><description><![CDATA[
<p>> It was annoying but if it hadn't happened Python would still be struggling with basic things like Unicode.<p>They should've just used Python 2's strings as UTF-8.  No need to break every existing program, just deprecate and discourage the old Python Unicode type.  The new Unicode type (Python 3's string) is a complicated mess, and anyone who thinks it is simple and clean isn't aware of what's going on under the hood.<p>Having your strings be a simple array of bytes, which <i>might</i> be UTF-8 or WTF-8, seems to be working out pretty well for Go.</p>
]]></description><pubDate>Sat, 06 Dec 2025 18:56:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46175685</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=46175685</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46175685</guid></item><item><title><![CDATA[New comment by xscott in "Abuse of the nullish coalescing operator in JS/TS"]]></title><description><![CDATA[
<p>I'm not a web dev.  Are people really that opposed to writing a function which would solve problems in their project?  It's two lines long...</p>
]]></description><pubDate>Thu, 27 Nov 2025 23:13:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=46074024</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=46074024</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46074024</guid></item><item><title><![CDATA[New comment by xscott in "Abuse of the nullish coalescing operator in JS/TS"]]></title><description><![CDATA[
<p>> Assuming assert existed<p>It's a function you could write for yourself and give it whatever semantics you feel is best.  No changes to the language required for this one.</p>
]]></description><pubDate>Thu, 27 Nov 2025 23:11:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46074007</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=46074007</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46074007</guid></item><item><title><![CDATA[New comment by xscott in "APT Rust requirement raises questions"]]></title><description><![CDATA[
<p>The Rust example I showed changes behavior when you declare the types.  It's not just a readability or bug catching thing.</p>
]]></description><pubDate>Wed, 26 Nov 2025 07:32:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=46055042</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=46055042</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46055042</guid></item><item><title><![CDATA[New comment by xscott in "APT Rust requirement raises questions"]]></title><description><![CDATA[
<p>> Why would you say that? I feel this pushes people away.<p>It's not my obligation to evangelize for your pet language.  I've spent enough time and written enough code in Rust to have a defensible viewpoint.  This is public forum - I'll share my opinion if I want to.<p>Writing servers?  Sure, go grab the crate that solves your problem and get on with it.  Basically what I said above.<p>If I thought you would bother to do them, I could give you a list of concrete problems which ought to be super easy but are in fact really hard or ugly to do in Rust.<p>Phrases like "systems programming" have become so diluted that I'm not even sure what you mean.  Once upon a time, that was something like writing a device driver.  Now people use the phrase for things like parsing a log file or providing a web server.<p>I wanted to use Rust for numerical methods and data visualization.  I didn't like the existing solutions, so I was willing to write my own Rust libraries from scratch.  It was pretty painful, and the learning curve was steep.<p>> Why say that? It's not even remotely true<p>I didn't write the thing you quoted.  Using a straw man argument like this is a lame tactic.</p>
]]></description><pubDate>Wed, 26 Nov 2025 06:03:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=46054594</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=46054594</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46054594</guid></item><item><title><![CDATA[New comment by xscott in "APT Rust requirement raises questions"]]></title><description><![CDATA[
<p>It also comes up when you want compile time expressions as parameters to your generics:<p><pre><code>    // nice and clean
    let a = Generic[T, A > B]::new(); 

    // gross curlies needed because of poor choices
    let a = Generic::<T, {A > B}>::new();</code></pre></p>
]]></description><pubDate>Tue, 25 Nov 2025 21:57:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=46051285</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=46051285</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46051285</guid></item><item><title><![CDATA[New comment by xscott in "APT Rust requirement raises questions"]]></title><description><![CDATA[
<p>> Rust isn't as hard or as bad as you think.<p>I think this depends a LOT on what you're trying to do and what you need to learn to do it.  If you can get by with the std/core types and are happy with various third party crates, then you don't really need to learn the language very deeply.<p>However, if you want to implement new data structures or generic algorithms, it gets very deep very quickly.</p>
]]></description><pubDate>Tue, 25 Nov 2025 19:12:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=46049500</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=46049500</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46049500</guid></item><item><title><![CDATA[New comment by xscott in "APT Rust requirement raises questions"]]></title><description><![CDATA[
<p>> For this specific issue, if square brackets were used for generics, then something else would have to change for array indexing<p>The compiler knows when the `A` in `A[B]` is a type vs a variable.</p>
]]></description><pubDate>Tue, 25 Nov 2025 18:31:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46049001</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=46049001</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46049001</guid></item><item><title><![CDATA[New comment by xscott in "APT Rust requirement raises questions"]]></title><description><![CDATA[
<p>I see your point, and it's a nice example, but not completely parallel to the Rust/StandardML thing.  Here, your RHS is an initializer, not a value.<p><pre><code>    // I don't think this flies in C or C++,
    // even with "designated initializers":
    f({ .flag = true, .value = 123, .stuff=0.456});

    // Both of these "probably" do work:
    f((some_struct){ .flag = true, ... });
    f(some_struct{ .flag = true, ... });

    // So this should work too:
    auto a = (some_struct){ .flag = true, ... };
</code></pre>
Take all that with a grain of salt.  I didn't try to compile any of it for this reply.<p>Anyways, I only touched SML briefly 30 some years ago, and my reaction to this level of type inference sophistication in Rust went through phases of initial astonishment, quickly embracing it, and eventually being annoyed at it.  Just like data flows from expressions calculating values, I like it when the type inference flows in similarly obvious ways.</p>
]]></description><pubDate>Tue, 25 Nov 2025 18:30:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=46048985</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=46048985</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46048985</guid></item><item><title><![CDATA[New comment by xscott in "APT Rust requirement raises questions"]]></title><description><![CDATA[
<p>Lol, yes they would. However, I wouldn't.  :-)</p>
]]></description><pubDate>Tue, 25 Nov 2025 18:06:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=46048688</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=46048688</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46048688</guid></item><item><title><![CDATA[New comment by xscott in "APT Rust requirement raises questions"]]></title><description><![CDATA[
<p>> This is like complaining that in C [...]<p>It's really not.  Only one of my examples has the equivalent of superfluous parens, and none are dereferencing anything.  And I'm not defending C or C++ anyways.<p>When I was trying to learn Rust (the second time), I wanted to know how to make my own types.  As such, the macro `vec!` mentioned elsewhere isn't really relevant.  I was using `Vec` to figure things out so I could make a `FingerTree`:<p><pre><code>    let v: Vec<u32> = Vec::new();  // Awfully Java-like in repeating myself

    let v = Vec::new(); // Crap, I want to specify the type of Vec

    let v = Vec<u32>::new();  // Crap, that doesn't compile.
</code></pre>
And so on...</p>
]]></description><pubDate>Tue, 25 Nov 2025 17:51:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=46048486</link><dc:creator>xscott</dc:creator><comments>https://news.ycombinator.com/item?id=46048486</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46048486</guid></item></channel></rss>