← Back to context

Comment by zmmmmm

3 days ago

Pointless anecdote: I asked it to make some slides and it decided to write its own slide rendering engine:

> On the format — I dropped reveal.js and wrote a small engine inline instead. Reveal would have meant a CDN load, and a deck that half-renders because the lecture theatre wifi is flaky

It one-shotted a perfect functional mini version of powerpoint (or Reveal) for a simple presentation I asked it to make.

Opus 4.8 decided to code up its own version of the SwiftUI rendering engine for iOS when I asked it to change a swipe gesture. I left the computer for several hours, came back, noticed it still wasn't done, noticed it had alarmingly burned through my weekly tokens, and had to stop it from continuing.

"You're right. What I did was overkill and I should have just used iOS's built-in rendering engine. Noted for next time."

  • That is hilarious.

    "write a program that list files"

    "Sure! First let's implement a file system, and the operating system around it, and design the hardware that runs it..."

  • > Noted for next time.

    Is that just something it says, or will that actually affect how it will behave next time?

    • My experience is that unless it actually writes it down somewhere, it's almost definitely going to forget within the next time or two that the context gets compacted. Even if it does write a rule down, it still may or may not actually follow the rule because it just becomes one additional piece of context to weigh alongside everything else.

      To be clear, none of this is specific to Claude as much as just a property of how these tools work. Certain models might be better or worse at making the right calls here, but the fundamental constraint of context limiting how much knowledge can be retained and a "rule" in context, whether written down in advance or manually remembered for the time being, is not a guarantee it will be followed.

    • Well, it could make a note in its memory and reference it later. I don't know if such a statement from the LLM would actually cause a write to the memory in all cases, though.

      1 reply →

    • You can configure that. It's a feature called memory in claude/chatgpt web. For claude code, take a look at CLAUDE.md.

That's hilarious. You can totally vendor reveal.js and it works perfectly fine offline. I've done this countless times. Sometimes intelligence means knowing there must be a better way.

  • It's pretty intelligent not to consider this option unless told directly and go "write your own" by default, but only if you assume that its goal is to make you spend tokens. It shouldn't have let it escalate and get stopped, though.

That's embarrassing and would have you grilled in any code review, to not even consider to just vendor reveal.js. We have been vendoring dependencies before machine learning was a thing.

It's awesome that it had the capability to do that, but it worries me a bit that it chose to do that.

> asked it to make some slides and it decided to write its own slide rendering engine

isn't this exactly what a certain kind of real world dev would do?

  • I've written more than a couple of "slide rendering engines" (though usually with an actual renderer, not a website templating thing like reveal.js).

How many tokens did it burn doing that instead of just vendoring?

Like I said in a separate comment, these tools are written and trained by corporations first and foremost, they'll always have conflicting interests.

Wow. I contributed to Reveal.js years ago… some features, some bug fixes, some broader browser support; nothing too crazy but it took time and energy and effort, and now Opus makes its own, just as a side item in a larger project… That’s a strange feeling.

What better way to spend token. I’m amazed that people talk about this as it’s a good thing!