1. 50
    Mea Culpa - Dark Hours blog.terrygodier.com
  1.  

    1. 41

      Your summary misses an interesting part: It plagiarized an existing vibecoded free software program, from the looks of it.

      The original author who got plagiarized used the same agents heavily, too.

      1. 26

        Reminds me of this old joke we had in school where the teacher asked 2 students :

        • How come you BOTH gave exact same answers to the test ?!
        • Well you gave us the same questions !
        1. 5

          there's a difference between "claude, make this app whose features I will describe" and "claude, clone this app"

          1. 8

            Eh. Obviously there’s a difference between the intent of those two requests, and I have no idea which one was reality here, but Claude is still gonna Claude, either way. Which is to say it will very eagerly copy without citing its sources. Because it doesn’t know it’s copying and can’t cite its sources.

            I’m not persuaded that the difference in intent between your two requests there is meaningful when the outcome is predictably the same either way.

            1. 3

              I don't think that's true in this case. The other Dark Hours app is, from what I can tell, relatively new, and it's probably not in the training data yet. So for Claude to copy it, it would need to do so explicitly. (In fairness, it might still not say that it's doing that, but that would be very unusual in my experience, and you'd be able to see what was happening by looking at the tool calls anyway.)

              Even if Dark Hours was in the training data, I would be very surprised if a new and relatively unheard-of app would be so heavily represented in the weights that it would be possible to replicate large chunks on it from "memory" alone. The reason LLMs still happily complete the fast square root code or that cloud noise generator is because those snippets of code are everywhere, typically in all sorts of blog posts and books, or various forks, or just copied all over the place. Therefore they will be stored with higher fidelity in the weights, increasing the chance that an LLM will just reproduce the snippet verbatim. That's not the case here, as far as I can tell.

              1. 4

                I think the implication is not that it has the original Dark Hours in its training data, but that both prompted it in a fairly similar way and got fairly similar output back, based on what actually is in the training data. The bug that both share may exist somewhere else in the corpus. Since neither author actually wrote the code containing that bug we can't really know where it came from.

                If we both prompt the same model for the same dashboard based on the same data right now without coordinating, we're probably going to get relatively similar results. Probably not identical, but having some details in common will not be too surprising.

                1. 1

                  Ah, yeah, that's true, thanks for pointing that out.

            2. 1

              The author of a plagiarized original work might call the two cases similar.

            3. 4

              If the existing program was vibecoded with Claude and this new app was vibecoded the same way with the same model, it seems reasonable to expect that they'd be similar, right? They are coming from the same training data set and harness after all. Saying that this second app "plagiarized" the first one, or feeling sorry that it did, seems weird.

              Of course it could be that Claude "researched" the Internet for similar ideas when asked to create the second app, and then replicated whatever it found in the open source repo... but I've never seen it operate that way yet.

              1. 3

                Saying that this second app "plagiarized" the first one, or feeling sorry that it did, seems weird.

                I have no inside knowledge. I'm purely basing that on the fact that the second human LLM operator felt the need to issue a public apology.

                I do kind of suspect that the reason they turned out so similar is that they were using similar methods from similar sources.

                If you and I both told the same model to implement quicksort from the original quicksort paper, they'd look a lot alike. And if we were working in the "sorting" problem space and both wanted to use LLMs to generate an implementation, we'd probably do that. Sharing some bugs would not be a big shock.

                But assuming I felt OK about using an LLM for it, I wouldn't feel the need to turn over my quicksort online API to you, apologize, etc. The fact that Godier saw that need and all-but called it plagiarism on his own stands out to me here.

                1. 3

                  Saying that this second app "plagiarized" the first one, or feeling sorry that it did, seems weird.

                  I felt it appropriate to say that because the author says so. I didn't go deeper than reading the article, I didn't know the original was vibecoded as well.

                2. 3

                  pot calling the kettle black i guess

                3. 29

                  The story is fascinating. Not only is the app plagiarized, the prelude to this drama was that the author claimed he submitted it to the App Store for iOS and was rejected due to it being an "astrology" (not astronomy) app. That's some ragebait if I've ever heard any! John Gruber felt the same and wrote a scathing takedown of Apple's review process. Only, it turns out he originally did submit an astrology app, which was rejected - and then replaced the app's contents with the new vibe coded Dark Hours and re-submitted.

                  John Gruber has retracted his article, and posted a new one with the details and a link to the original here: https://daringfireball.net/2026/08/retraction_app_store_rejection_of_the_week

                  (Note: this story still feels a little fishy because the App Store doesn't ban astrology apps! You can look yourself - there are tons of them. But it's possible they would reject an uninteresting one as spam?)

                  Then there's the fact that Godier - whose ethics are already in question - "plagiarized" an existing vibe coded app. Did he? Probably. But maybe the agent simply regurgitated a very similar output when both users asked for similar things?

                  We certainly live in exciting times.

                  1. 6

                    Re: App Store doesn’t ban astrology:

                    I’m sure Gruber mentions this in his article, but Apple apparently will reject apps in some low-value categories if there are already many apps like them that fulfil the purpose already; and divination (where astrology apps like the original Dark Hours originally fit) is one such category

                    1. 3

                      Thanks, you're right that he mentions that in the footnote.

                  2. 3

                    Their first pull request on the "original" repo is from June 1, 2026. They probably just vibe coded it the same way