MarkBernstein.org
Feb 26 21 2026

AI: Polite?

Ought one to be polite to Claude Code? Should you say “please” and “thank you”?

On the one hand, it's a machine. It has no feelings to hurt. At least, we don’t think so.

On the other hand, it’s good to be nicer, just on general principles. It does no harm to say “please”, at least not if you remember that Claude Code is not a person, nor even an animal.

It is said that, even at the end of his tether, Moses did not strike the Red Sea or speak harshly to it, because the sea was just doing what a sea does, and that is not justification for harsh or unkind words. And that turned out alright.

by Anthony Kaldellis

No one talks about curating one’s reading list.

In the long run, I’m writing (or hoping to write) a book about information, computation, and understanding. One part of that is Byzantium. What we know about antiquity, we chiefly know because Byzantium managed to preserve it, and how they managed that is part of the history of information. I know very little about Byzantium, and this is a fine and detailed history.

But Byzantium spanned a millennium and change between Diocletian and Constantine XI Paileologos, and this book is a veritable brick, and the world is changing around us. It always is, of course, but AI: you can talk to machines! It’s a fairy tale worthy of Pandamus or Grimm!

AI: New Frontiers

Today’s AI can make you better at doing things you do well. That is what AI is for.

This week, I cleaned up a Tinderbox nuisance, one that goes all the way back to 2000. Tinderbox views, like the map view, are filled with geometry. Originally, I used native Points and Rects, but when we started to think about Windows, I abstracted them to SPoints and SRects which have lots of behavior: hit-testing, drawing, and more. That was a big win.

Map view didn’t use objects to distinguish between different coordinate systems. It has the abstract map coordinate system, used for scaling and storing the dimensions of objects. It has the concrete system of local coordinates, in which the drawing is done. It sometimes deals with window coordinates and even raw screen coordinates. It’s easy to get confused. With about 350,000 lines of code, I get plenty confused.

But sorting this out is tricky. There are points everywhere, and it's not always obvious to which coordinate system they belong. You have to go up the line: what does the caller expect? What does it send you? Each change needs you to prove a simple little theorem. It’s not hard to do, but it needs to be done, again and again. That’s exhausting.

But our slaves of steel have nothing better to do, and proving little theorems is right up their alley. So, for the past four days, Claude Code Opus4.6 and I have been teaming up. Claude proves the theorems, I confirm them, and then I fix and test the code. It’s been 3,500 edits in all. Now we have about 70 explicit MapPoints and 225 explicit LocalPoints, and it's no longer possible to accidentally add a MapPoint to a LocalPoint. Along the way, I diagnosed several blunders, some of which have been around for a long time.

This isn’t vibe coding: I hold the knife. (Occasionally, Claude did peek over my shoulder and said I was doing it wrong, and some of the time Claude was right.). The code ends up tidier than when we started. Without Claude, this is the sort of big numbing project that’s hard to justify.

An interesting detail is my use of comments. I bought in to Kent Beck’s argument, back in the 2000s, that comments should seldom if ever explain what the code does. If the code needs to be explained, it should be rewritten more clearly. Though I did not prompt for this, Claude now recognizes comments as an indicator that the code near the comment is suspect. That’s interesting.