<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: joshka</title><link>https://news.ycombinator.com/user?id=joshka</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 14 Jun 2026 22:37:01 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=joshka" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by joshka in "Weave: Merging based on language structure and not lines"]]></title><description><![CDATA[
<p>Automated process run into race conditions more often due to their frequency.
Humans can do that too, but are less likely to in practice both due to lower frequency and because they carry more awareness of global context that isn't captured in systems that aren't checking for it. The ability of your brain to read and take as context all the pull requests open in a repo that might affect your work.</p>
]]></description><pubDate>Sun, 14 Jun 2026 08:08:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48525210</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48525210</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48525210</guid></item><item><title><![CDATA[New comment by joshka in "I Am Not a Reverse Centaur"]]></title><description><![CDATA[
<p>I agree with the core maintainer complaint here: PR slop is bad, and maintainers should not be forced into reviewing code the submitter does not understand.<p>But I think the answer is not “don’t slop me, all you sloppers.” The better answer is closer to: “what problem were you trying to solve?”<p>There is no obligation to treat every PR as merge-ready code. A PR can also be a concrete issue report or a proof-of-concept for a bug. It can say: I found a problem, I investigated it, and code was the clearest way to show where I think the issue lives and how it might be addressed. Use or ignore the implementation as you like. Human-language descriptions are not always the best way to communicate something you've already traced through the codebase.<p>That can be a high-value contribution even if the code itself is not accepted. It moves the conversation from “I want X” to “here is where X touches the codebase, here is a failing case, here is a possible direction, here are the tradeoffs I noticed.”<p>The social contract should be that the contributor does not dump review debt on the maintainer. Mark it as a prototype. Explain the problem in your own words. Say what you tested. Say what you are unsure about. Be willing to revise or accept that the maintainer may throw the patch away.<p>But once framed that way, the relevant question is not whether AI was used. It is whether the PR reduces ambiguity or increases burden.<p>A sloppy PR that demands review is bad. A prototype PR that explains a real problem is often useful.</p>
]]></description><pubDate>Sat, 13 Jun 2026 14:53:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=48517931</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48517931</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48517931</guid></item><item><title><![CDATA[New comment by joshka in "[dead]"]]></title><description><![CDATA[
<p>This seems like a pretty classic attribution error to me.<p>The screenshot is funny, and obviously the block is absurd, but the leap from “a safety classifier or routing layer misfired” to “Anthropic is leaning into the nanny state thing” feels like adding a lot of intent that the evidence doesn’t support.<p>Occam’s razor says this is probably just a dumb false positive somewhere in a safety stack. That’s still worth criticizing, especially because these systems can be brittle and overbroad, but it’s a very different claim from whatever the editorializing is suggesting.</p>
]]></description><pubDate>Sat, 13 Jun 2026 08:19:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=48514831</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48514831</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48514831</guid></item><item><title><![CDATA[New comment by joshka in "H.R. 6028 would fundamentally change the U.S. Copyright Office"]]></title><description><![CDATA[
<p>But calling them out in a partisan may disincentivize half of the people to understand the issue.</p>
]]></description><pubDate>Sat, 13 Jun 2026 04:30:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48513156</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48513156</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48513156</guid></item><item><title><![CDATA[New comment by joshka in "The Future of Email"]]></title><description><![CDATA[
<p>Same - I plugged it into ChatGPT to check if I'd missed something contentful. I hadn't really. Not news, more survey of things that matter a bit. If you know those things already then this is just fluff. Nothing about the future, more just here's some things I like.</p>
]]></description><pubDate>Fri, 12 Jun 2026 13:53:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48504097</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48504097</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48504097</guid></item><item><title><![CDATA[New comment by joshka in "Ask HN: How do you get into a flow state when using AI to code?"]]></title><description><![CDATA[
<p>A couple of things to consider:<p>Start with a set of work that's well specified and reasonably chunked to sizes that make it so that the review parts fit in the gaps of the working chunk and interleave (1-4 tasks of this). While the agent is working on the A task, you're reading the B task, only add a 3rd task if you're waiting on the agent excessively. Give yourself some slack on this to think about side quests (maintenance / tech debt / planning future work to your system etc.)<p>Make sure the handoffs are reasonably detailed (prompts / AGENTS.md instructions) - make your agents provide more context than normal - make them assume that you don't read all the text they spit out and need to be handed succinct summaries with information that helps reduce cognitive burdens (what I was doing, how I did it, what's next etc.)<p>It's reasonable to regularly ask the agent what things you've worked on choices made, options considered and discarded, context rehydrating. There's a lot of small tweaks you do when interactive prompting that get lost in a drift rather than captured as a neat single list. Make the agent help track that stuff. (at least prior to shipping, but often in intermediate steps.<p>Write flows that keep software in a buildable state so you can run it and queue up changes based on what you see. Avoid long periods of broken refactoring (caller code written before callee, deletion before add in a move etc.) Run quick checks (e.g. rust's cargo check) after each change, not at the end.<p>Correction of agent errors should end up as future steering. If the agent makes a mistake once it's the agents fault, twice it's your fault.<p>Leave time to stop and evaluate the current state regularly (where are we on the work). It's easy to mistake momentum for progress when you're the human part of an agentic loop.</p>
]]></description><pubDate>Thu, 11 Jun 2026 20:14:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=48495821</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48495821</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48495821</guid></item><item><title><![CDATA[New comment by joshka in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>Please feel free to strongman. Extend the argument until it hits a point of non-triviality and then apply reasoning.</p>
]]></description><pubDate>Wed, 10 Jun 2026 17:46:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=48479967</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48479967</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48479967</guid></item><item><title><![CDATA[New comment by joshka in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>You've read books and they are in your brains corpus. You only infringe copyright if you reproduce the same actual words from the books in your memory (and then do infringing acts defined by copyright laws with that output).<p>Here that's not happening. The code being produced by the LLM is Rust, not C.</p>
]]></description><pubDate>Wed, 10 Jun 2026 17:45:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=48479951</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48479951</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48479951</guid></item><item><title><![CDATA[New comment by joshka in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>> There is no other behavioral description that would reproduce all needed functionality.<p>Tests often are exactly the information necessary to understand exactly what the output should be. See <a href="https://github.com/git/git/blob/master/t/t0000-basic.sh" rel="nofollow">https://github.com/git/git/blob/master/t/t0000-basic.sh</a> for an example of how detailed these tests are.<p>It would be reasonable to point an LLM at these and use them with a basic knowledge of git to produce a rust version of git in a non-infringing manner.<p>If you did this manually it would take a long time.</p>
]]></description><pubDate>Wed, 10 Jun 2026 17:35:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=48479795</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48479795</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48479795</guid></item><item><title><![CDATA[New comment by joshka in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>Repetition isn't really a factor in deciding whether something is infringing or not - check the copyright law in your jurisdiction. Here if you look specifically at what an LLM's sampling stage is doing, it's choosing non infringing tokens (i.e. rust source code) over infringing ones (i.e. C source code). So it's making an intentional choice to do something similar rather than creating something that has the same expression. That doesn't seem like it's copyright infringement to me.</p>
]]></description><pubDate>Wed, 10 Jun 2026 17:31:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=48479712</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48479712</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48479712</guid></item><item><title><![CDATA[New comment by joshka in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>I'd challenge you here to think about this in terms of the legal aspects rather than reaching specifically for similarities as similar is often meaningless in the law or contracts when specific acts are codified rather than generalized ones.<p>I'd say what we're talking about here is probably a fair bit different to modding a game in most aspects.</p>
]]></description><pubDate>Wed, 10 Jun 2026 17:26:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=48479635</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48479635</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48479635</guid></item><item><title><![CDATA[New comment by joshka in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>> [US jurisdiction]: Anything in the result written by the LLM can not be copyright by anyone.<p>This is a bit stronger than the actual report where this has been discussed finds. See part 2 in <a href="https://www.copyright.gov/ai/" rel="nofollow">https://www.copyright.gov/ai/</a> for details, but TL;DR, parts where humans have control over the expression may be copyrightable. But working out which parts those are is likely a difficult question (would likely require proof of provenance across many of those LLM sessions)</p>
]]></description><pubDate>Wed, 10 Jun 2026 03:47:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48471186</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48471186</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48471186</guid></item><item><title><![CDATA[New comment by joshka in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>You're recalling it right, but there's a nice quote from Judge Alsup in that case that talks about this exact situation:<p>> “So long as the specific code used to implement a method is different, anyone is free under the Copyright Act to write his or her own code to carry out exactly the same function or specification...”<p>Here given that this is rust and the original expression is C, the implementations cannot be the same by definition.</p>
]]></description><pubDate>Wed, 10 Jun 2026 02:55:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=48470803</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48470803</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48470803</guid></item><item><title><![CDATA[New comment by joshka in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>> test_sum is assumedly relatively trivial. So as a lay person I’d expect some sort of obviousness test to apply. Like so much of the stuff in the Google/Oracle lawsuit.<p>Feel free to extrapolate to the threshold where it's not and at that point apply.<p>> you’re really having to duplicate the actual git internals<p>Copyright covers the expression, not the method. So the Rust function:<p><pre><code>    fn sum(a: u8, b: u8) {
        a + b
    }
</code></pre>
is distinct from the C function:<p><pre><code>    int sum(int a, int b) 
    {
        return a + b;
    }</code></pre></p>
]]></description><pubDate>Wed, 10 Jun 2026 02:48:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=48470750</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48470750</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48470750</guid></item><item><title><![CDATA[New comment by joshka in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>By definition a test suite is about testing interoperability with the test suite. An HTTP test suite should likely test for whether response code 418 is implemented a particular way and while humorous it would still be an interop test no?</p>
]]></description><pubDate>Wed, 10 Jun 2026 02:44:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=48470717</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48470717</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48470717</guid></item><item><title><![CDATA[New comment by joshka in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>>  Doesn't infringe upon copyright period, because there's no creative element in that work.<p>There's likely a threshold at some point. It's helpful to look at a minima and then continue from there though.<p>I'm curious if there's case law that supports your assertions here?</p>
]]></description><pubDate>Wed, 10 Jun 2026 02:40:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48470691</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48470691</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48470691</guid></item><item><title><![CDATA[New comment by joshka in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>This is the exact thing I'm not sure about. See <a href="https://news.ycombinator.com/item?id=48470397">https://news.ycombinator.com/item?id=48470397</a> where I posit a simpler question: if a `test_sum()` function is copyrighted, does writing a `sum(a, b)` function infringe on the copyright of the software product that `test_sum()` is a part of. I'd say no. There's another part of the GPL that applies here:<p>> A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.<p>So assuming that sum(a, b) is non-infringing and not combined to form a larger program (i.e. the tests aren't compiled into the grit code), then the GPL explicitly doesn't apply to this use</p>
]]></description><pubDate>Wed, 10 Jun 2026 02:11:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=48470468</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48470468</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48470468</guid></item><item><title><![CDATA[New comment by joshka in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>It's actually murkier than I suggest here. <a href="https://github.com/gitbutlerapp/grit/blob/main/AGENTS.md#source-of-truth" rel="nofollow">https://github.com/gitbutlerapp/grit/blob/main/AGENTS.md#sou...</a></p>
]]></description><pubDate>Wed, 10 Jun 2026 02:04:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=48470416</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48470416</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48470416</guid></item><item><title><![CDATA[New comment by joshka in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>> That's not actually the case at hand here - the agents were given the original source to reference: <a href="https://github.com/gitbutlerapp/grit/blob/main/AGENTS.md#sou" rel="nofollow">https://github.com/gitbutlerapp/grit/blob/main/AGENTS.md#sou</a>...<p>yeah fair - the "The canonical Git source code we're targeting to replicate the functionality of is in the git/ subdirectory." part makes this hard to argue against.<p>> To the extent the resulting work is a derivative of the test suite it is possibly infringing<p>It's this bit that I have a problem with. If I run the test, it fails and reports a failure. Now I write code and run the test again. What is the theory there that code that I wrote infringes.<p>Simplify this down:<p>Assume the following is copyrighted:<p><pre><code>    fn test_sum() {
        assert_eq!(sum(1, 1), 2);
    }
</code></pre>
Does writing the following code:<p><pre><code>    fn sum(a: u8, b: u8) {
        a + b
    }
</code></pre>
infringe on the test copyright?</p>
]]></description><pubDate>Wed, 10 Jun 2026 02:01:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48470397</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48470397</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48470397</guid></item><item><title><![CDATA[New comment by joshka in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>Fair point on medium - this was a lazy example.<p>Substitutibility probably doesn't apply here in the way you're implying and if it did it would likely be hampered by the 9th circuits findings about transformation in sony v connectix. Arguments here likely would look at rust not having a stable ABI, and hence not being inherently substitutable as a libray (grit-lib), less clear as an executable (grit-cli) on that side<p>basics of copyright law - the fundamental thing being protected is the expression... is a rust program's expression the same expression as a c program? I'd say generally not.</p>
]]></description><pubDate>Wed, 10 Jun 2026 01:49:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=48470298</link><dc:creator>joshka</dc:creator><comments>https://news.ycombinator.com/item?id=48470298</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48470298</guid></item></channel></rss>