|
Archive:
Subtopics:
Comments disabled |
Mon, 09 Mar 2026
Programmers will document for Claude, but not for each other
A couple of days ago I recounted a common complaint:
For larger projects, I've taken to having Claude maintain a handoff document that I can have the next Claude read, saying what we planned to do, what has been done, and other pertinent information. Then when I shut down one Claude I can have the next one read the file to get up to speed. Then I have the Claude !!n+1!! update it for Claude !!n+2!!. After seeing the common complaint enough times I had a happy
inspiration. I'd been throwing away Claude's handoff documents at the
end of each project. Why do that? It's no trouble to copy the file
into the repository and commit it. Someone in the future, wondering
what was going on, might luckily find the right document with I'm a little slow so it took me until this week to think of a better version of this: at the end of the project I now ask Claude to write up from scratch a detailed but high-level explanation of what problem we were solving and what changes we made, and I commit that. Not just running notes, but a structured overview of the whole thing. I review these overviews carefully and make edits as necessary before I check them in. It's my signature on the commit, and my bank account receiving the paycheck, so nothing goes into the repository that I haven't read carefully and understood, same as if Claude were a human programmer under my supervision. But Claude's explanations haven't required much editing. Claude's most recent project summary was around as good as what I could have written myself, maybe a little worse and maybe a little better. But it took ten seconds to write instead of an hour, and it didn't take anything like an hour to review. The serious thing I had to fix the last time around was that Claude had used a previous, related report as a model, and the previous report had had a paragraph I had added at the end that said:
Claude's new document had an identical section at the end. Oops!
Fortunately, by the time I saw it, it was true, so I didn't have to
delete it. I had Claude add a sentence to My advice for the day:
Maybe this is obvious? But it wasn't obvious to me. I'm still getting used to this new world. [Other articles in category /tech/gpt] permanent link Sun, 08 Mar 2026
How are John Waters movies like James Bond movies?
A number of years ago I wondered how many movies I had seen. The only way I could think of finding out was just to make a list. This I did as best I could. (It turned out to be around 700.) I found, though, that I could not include all the James Bond movies I had seen, because I couldn't tell them apart from the descriptions. I'd read a plot summary for a James Bond movie, and ask myself “Did I see that? I don't know, it sounds like every other James Bond movie.” Today I discovered that John Waters movies are like that also. I was trying to remember if I had seen A Dirty Shame:
You'd think that would be something I would remember decisively, or not. But I'm really not sure. All I can do is shrug and say “I don't know, it sounds like a John Waters movie I have seen, but maybe it wasn't that one.” Looking into it further I discovered that I also wasn't sure if I had seen Multiple Maniacs. In it, Divine's character is raped by a giant lobster. On the one hand, that seems like the sort of thing I would remember. And I think maybe I do? But again I'm not sure I'm not just imagining what it would be like! [Other articles in category /movie] permanent link Thu, 05 Mar 2026
Documentation is a message in a bottle
Our company is going to a convention later this month, and they will have a booth with big TV screens showing statistics that update in real time. My job is to write the backend server that delivers the statistics. I read over the documents that the product people had written up about what was wanted, asked questions, got answers, and then turned the original two-line ticket into a three-page ticket that said what should be done and how. I intended to do the ticket myself, but it's good practice to write all this stuff down, for many reasons:
A few days after I wrote the ticket, something unexpected happened. It transpired that person who was to build the front-end consumer of my statistics would not be a professional programmer. It would be the company's Head of Product, a very smart woman named Amanda. The actual code would be written by Claude, under her supervision. I have never done anything like this before, and I would not have wanted to try it on a short deadline, but there is some slack in the schedule and it seemed a worthwhile and exciting experiment. Amanda shared some screencaps of her chats with Claude about the project, and I suggested:
Claude immediately produced a nine-page, 14-part memo and a half-page overview. I spent a couple of hours reviewing it and marking it up. It became immediately clear that Claude and I had very similar ideas about how the project should go and how the front and back ends would hook up. So similar that I asked Angela:
She said yes, she had. She had also fed it the original product documents I had read. I was delighted. I had had many reasons for writing detailed ticket descriptions before, but the most plausible ones were aimed back at myself. The external consumers of the documentation all seemed somewhat unlikely. The person who would extend the project in the future probably didn't exist, and if they did they probably wouldn't have thought to look at my notes. Same for the hypothetical person who would take over when I got sick. My boss probably isn't checking up on me by looking at my ticketing history. Still, I like to document these things for my own benefit, and also just in case. But now, because I had written the project plan, it was available for consumption when an unexpected consumer turned up! Claude and I were able to rapidly converge on the design of the system, because Amanda had found my notes and cleverly handed them to Claude. Suddenly one of those unlikely-seeming external reasons materialized! On Mastodon I keep seeing programmers say how angry it makes
them that people are willing to write detailed The obvious answer to the question of why people are willing to write documentation for Claude but not for their coworkers is that the author can count on Claude to read the documentation, whereas it's a rare coworker who will look at it attentively. Rik Signes points out there's a less obvious but more likely answer: your coworkers will remember things if you just tell them, but Claude forgets everything every time. If you want Claude to remember something, you have to write it down. So people using Claude do write things down, because otherwise they have to say them over and over. And there's a happy converse to the complaint that most programmers don't bother to write documentation. It means that people like me, professionals who have always written meticulous documentation, are now reaping new benefits from that always valuable practice. Not everything is going to get worse. Some things will get better. Addendum 20260208A corollary: You don't have to write the rocumentation yourself. You can have Claude write a detailed summary based on your ongoing chats about the work, and then you can edit it and check it in. If you're good at editing, anyway. I wonder if part of the reason Claude is working so well for me is that I'm really good at editing and at code review? [Other articles in category /tech/gpt] permanent link Tue, 03 Mar 2026Bo Diddley's cover of "Sixteen Tons" sounds very much like one of my favorites, "Can't Judge A Book By Its Cover". It's interesting to compare. Thinking on that it suddenly occured to me that his name might have been a play on “diddley bow”, which is a sort of homemade one-stringed zither. The player uses a bottle as a bridge for the string, and changes the pitch by sliding the bottle up and down. When you hear about blues artists whose first guitars were homemade, this is often what was meant: it wasn't a six-string guitar, it was a diddley bow. But it's not clear that Bo Diddley did play his name on the diddley bow. "Diddly" also means something insignificant or of little value, and might have been a disparaging nickname he received in his youth. (It also appears in the phrase "diddly squat"). Maybe that's also the source of the name of the diddley bow. [Other articles in category /lang/etym] permanent link Thu, 12 Feb 2026
Language models imply world models
In a recent article about John Haugeland's rejection of micro-worlds I claimed:
Nobody has objected to this remark, but I would like to expand on it. The claim may or may not be true — it is an empirical question. But as a theory it has been widely entertained since the very earliest days of digital computers. Yehoshua Bar-Hillel, the first person to seriously investigate machine translation, came to this conclusion in the 1950s. Here's an extract of Haugeland's discussion of his work:
(Artifical Intelligence: The Very Idea; John Haugeland; p.174–176.) Bar-Hillel says, and I agree, that an accurate model of language requires an accurate model of the world. In 1960, this appeared “utterly chimerical”. Perhaps so, but here we are, and 55 years later we have what most agree is a language model capable of producing intelligible text complex enough to fool sophisticated readers. Even people who call the LLM a “stochastic word garbage spewer” and object when it is called “AI” seem to have no qualms about the term “large language model”. The Winograd SHRDLU project was an attempt to construct a world whose model was small enough to not be utterly chimerical. This worked, but as Haugeland says, it wasn't actually interesting. Doug Lenat tried for forty years construct an explicit world model. When he died in 2023 I think people still considered the project to have been utterly chimerical. I may be misrepresenting Bar-Hillel's views. He didn't actually say “world model”, he said “universal encyclopedia”. Lenat's project's name, “Cyc”, acknowledges this: “Cyc” is short for “encyclopedia”. And until recently a universal encyclopedia did seem, to many, to be utterly chimerical. (Imperial China produced many interesting attempts.) But we do now in fact have a universal encyclopedia, and Claude has ingested that universal encyclopedia. Let's try it and seeBar-Hillel thought that the “box is in the pen” example proved that machine translation would be at the very least extremely difficult: it requires understanding of the usual relative sizes of boxes and pens, and that the possibility of such understanding in general “hardly deserves any further discussion”. I asked Claude:
Claude said:
Presumably Bar-Hillel's article and Haugeland's book was in Claude's training data, and perhaps it somehow absorbed the right thing to say here without actually knowing anything about boxes or pens. I tried the next similar example that came to mind:
Okay, that's just what I would have said.
I think Claude is wrong about the grammar here. I'm not sure what “predicate noun” means and I suspect Claude is using the term incorrectly. I can't understand “what suit was the king?” as grammatical in any plausible construction, only in highly contrived situtations such as an evil wizard transforming the king into a suit of armor and hiding him in the armory. But if one agrees to take it to mean “what suit does the king have” I agree that this is a perfectly plausible interpretation even though there isn't anything clearly clothing-related nearby, and if one assumes it meant “what suit was the king wearing” then the clothing interpretation is unavoidable.
Again I disagree that this makes grammatical sense. Without “in” I think a native listener would be at least puzzled. (“Do you mean ‘what suit was the king involved in?’?”)
In my opinion, it is not grammatically plausible. However, I think focusing on the grammatical errors would missing the point. The “soot” interpretation is unlikely, I think the bad grammar rules it out, and Claude's response does not seem to recognize this. But Claude does express understanding that that the interpretation is unikely without some surrounding soot-related context, and a reasonable idea of what that context would need to be like.
I had been thinking of “color” as referring to the king's skin color, but I agree that the chess piece or game token interpretation is more plausible. Again Claude seems to understand something about how we talk about things. If the king were a playing card, we might be asking if it is a red king or a black king. But without that context it's now more likely that the king is a chess piece than a playing card.
That's just what I would have said.
I thought Claude might botch this. There is no grammatical or semantic reason why “what age was the king” doesn't work, so the only reason to reject this is orthographic. And Claude's grasp of spelling still seems quite weak. The other day it claimed that “‘Warner’ is likely either a typo for ‘Cham’ or …” which couldn't be wronger. I told it at the time that it is impossible that "Cham" could be a typo for “Warner”, and if pressed to explain why, I would have said something like what Claude said here. Tentative conclusionsInteresting as this all is, it is a digression. My main points, again:
Addendum20260214I disagreed with Claude that “what suit was the king” made grammatical sense. Rik Signes has pointed out that it it is certainly grammatical, because the grammar is the same as “what person was the king” or “what visitor was the king”. My discomfort with it is not grammatical, it is pragmatic. [Other articles in category /tech/gpt] permanent link Thu, 05 Feb 2026
John Haugeland on the failure of micro-worlds
One of the better books I read in college was Artificial Intelligence: The Very Idea (1985) by philosopher John Haugeland. One of the sections I found most striking and memorable was about Terry Winograd's SHRDLU. SHRDLU, around 1970, could carry on a discussion in English in which it would manipulate imaginary colored blocks in a “blocks world”. displayed on a computer screen. The operator could direct it to “pick up the pyramid and put it on the big red cube” or ask it questions like “what color is the biggest cylinder that isn't on the table?”. Haugeland was extremely unimpressed (p.190, and more generally 185–195):
He imagines this exchange between the operator and SHRDLU:
What does Haugeland say he would like to have seen?
On this standard, at least, an LLM is a smashing success. It does, in fact, have a model of trading, acts, property, and water pistols, or at least of how we talk about such things. We might criticize the model's accuracy, or usefulness, but it certainly exists. The large language model is a model of the semantics of trading, acts, property, water pistols, and so on. Curious to see how it would go, I asked Claude to pretend it had access to a SHRDLU-like blocks world:
I asked it a few SHRDLU-like questions about the blocks, then asked it to put a block on a pyramid. It clearly understood the point of the exercise:
SHRDLU could handle this too, although I think
its mechanism was different: it would interact with the separate
blocks world subsystem and ⸢actually⸣ try to put the block on the
pyramid; the simulated physics would simulate the block falling off
the pyramid, and SHRDLU would discover that its stacking attempt had
been unsuccessful. With Claude, something very different is
happening; there is no physics simulation separate from Claude. I
think the answer here demonstrates that Claude's own model includes
something about pyramids and something about physics.
Then I made the crucial offer:
Would Haugeland have been satisfied in 1985 if SHRDLU had said this? I think certainly. Haugeland wanted SHRDLU to respond to the offer directly, as the beginning of a negotiation. Claude's response is one level better from that: it not only recognizes that I am negotiating, it recognizes that actually negotiating for the squirt gun would not make sense, and offers a sensible workaround. I pushed it a little farther:
Perhaps I'm reading too much into this, but
it seems to me that, having recognized that the offer to
negotiate was itself silly, Claude is responding in the same mode with
its comments about threatening the pyramids.
Mostly I just tried this for fun. The Haugeland discussion of SHRDLU has been knocking around my head for forty years, but now it has knocked against something new, and I wanted to see what would actually happen. But I do have a larger point. Haugeland clearly recognized in 1985 that a model of the world was a requirement for intelligence:
and later:
Are there are any people who are still saying “it's not artificial intelligence, it's just a Large Language Model”. I suppose probably. But as a “Large Language Model”, Claude necessarily includes a model of the world in general, something that has long been recognized as an essential but perhaps unattainable prerequisite for artificial intelligence. Five years ago a general world model was science fiction. Now we have something that can plausibly be considered an example. And second: maybe this isn't “artificial intelligence” (whatever that means) and maybe it is. But it does the things I wanted artificial intelligence to do, and I think this example shows pretty clearly that it does at least one of the things that John Haugeland wanted it to do in 1985. My complete conversation with Claude about this. Addenda20260207I don't want to give the impression that Haugeland was scornful of Winograd's work. He considered it to have been a valuable experiment:
(p. 195) 20260212More about my claim that
I was not just pulling this out of my ass; it has been widely theorized since at least 1960. [Other articles in category /tech/gpt] permanent link Wed, 28 Jan 2026
Crooked politicians love crab cakes!
I recently posted an article about the 2013 Philadelphia Traffic Court fiasco, in which most of the Traffic Court judges were convicted of accepting bribes:
(The Philadelphia Inquirer, Nine current and former Traffic Court judges charged; Martin, John P. and Craig R. McCoy; January 31, 2013) Then in 2024, John “Johnny Doc” Dougherty, an influential Philadelphia union boss, pled guilty to embezzlement and bribery, paid in part in, guess what?
(The Philadelphia Inquirer, For leader John Dougherty, union-paid generosity began at home; Fazollah, Mark, Dylan Purcell, Jeremy Roebuck, and Craig R. McCoy; Feb 5 2019) He called them out specifically in his guilty plea:
(The Philadelphia Inquirer, ‘I am guilty:’ John Dougherty’s stunning statements at sentencing delivered an about-face few had predicted; Roebuck, Jeremy and Oona Goodin-Smith; July 13, 2024.) And now, in today's New York Times, I find:
(The New York Times, Former Adams Aide Took Diamond Earrings as Bribe, Prosecutors Say; Meko, Hurubie; January 27, 2026.) Poor Fenchurch, usually a gentle soul, is speechless with indignation. [Other articles in category /law] permanent link A couple of years back I wrote an article about this bit of mathematical folklore:
I have an non-apocryphal update in this space! In episode 94 of the podcast “My Favorite Theorem”, Jeremy Alm of Lamar University reports:
(At 04:15) In the earlier article, I had said:
In the podcast, Alm introduces this as evidence that he “wasn't very good at algebra”. Fortunately, he added, it was after he had graduated. The episode title is “In Which Every Thing Happens or it Doesn't”. I started listening to it because I expected it to be about the ergodic theorem, and I'd like to understand the ergodic theorem. But it turned out to be about the Rado graph. This is fine with me, since I love the Rado graph. (Who doesn't?) [Other articles in category /math] permanent link Mon, 26 Jan 2026
An anecdote about backward compatibility
A long time ago I worked on a debugger program that our company used to debug software that it sold that ran on IBM System 370. We had IBM 3270 CRT terminals that could display (I think) eight colors (if you count black), but the debugger display was only in black and white. I thought I might be able to make it a little more usable by highlighting important items in color. I knew that the debugger used a macro called In those days, that office didn't have online manuals, instead we had shelf after shelf of yellow looseleaf binders. Finding the binder you wanted was an adventure. More than once I went to my boss to say I couldn't proceed without the REXX language reference or whatever. Sometimes he would just shrug. Other times he might say something like “Maybe Matthew knows where that is.” I would go ask Matthew about it. Probably he would just shrug. But if he didn't, he would look at me suspiciously, pull the manual from under a pile of papers on his desk, and wave it at me threateningly. “You're going to bring this back to me, right?” See, because if Matthew didn't hide it in his desk, he might become the person who couldn't find it when he needed it. Matthew could have photocopied it and stuck his copy in a new binder, but why do that when burying it on his desk was so much easier? For years afterward I carried around my own photocopy of the REXX language reference, not because I still needed it, but because it had cost me so much trouble and toil to get it. To this day I remember its horrible IBM name: SC24-5239 Virtual Machine / System Product System Product Interpreter Reference. That's right, "System Product" was in there twice. It was the System Product Interpreter for the System Product, you see. Anyway, I'm digressing. I did eventually find a copy of the IBM
Assembler Product Macro Reference Document or whatever it was called,
and looked up My glee turned to puzzlement. If omitted, the default value for
Black? Not white? I read further. And I learned that the only other permitted value was
[Other articles in category /prog] permanent link Sun, 21 Sep 2025
My new git utility `what-changed-twice` needs a new name
As I have explained in the past, my typical workflow is to go
along commiting stuff that might or might not make sense, then clean it
all up at the end, doing multiple passes with What is Fred for? I have a couple of uses for it so far. Often as I work I'll produce a chain of commits that looks like this:
It often happens that I will modify a file on Monday, modify it some more on Tuesday, correct a spelling error on Wednesday. I might have made 7 sets of changes to the main file, of which 4 are related, 2 others are related to each other but not to the other 4, and the last one is unrelated to any of the rest. When a file has changed more than once, I need to see what changed and then group the changes into related sets. The Some files changed only once, and I don't need to think about those at this stage. Later I can go back and split up those commits if it seems to make the history clearer. Fred takes the output of
It finds which files were modified in which commits, and it prints a report about any file that was modified in more than one commit:
The report is in two parts. At the top, the path of each file that
changed more than once in the log, and the (highly-abbreviated) commit
IDs of the commits in which it changed. For example,
Now I can look to see what else changed in those three commits:
then look at the changes to
and then decide if there are any changes I might like to squash together. Many other files changed on the branch, but I only have to concern myself with four. There's bonus information too. If a commit is not mentioned in the report, then it only changed files that didn't change in any other commit. That means that in a rebase, I can move that commit literally anywhere else in the sequence without creating a conflict. Only the commits in the report can cause conflicts if they are reordered. I write most things in Python these days, but this one seemed to cry out for Perl. Here's the code. Hmm, maybe I'll call it [Other articles in category /prog/git] permanent link Sun, 25 May 2025
Mystery of the quincunx's missing quincunx
A quincunx is the X-shaped pattern of pips on the #5 face of a die. It's so-called because the Romans had a common copper coin called an as, and it was divided (monetarily, not physically) into twelve uncia. There was a bronze coin worth five uncia called a quīncunx, which is a contraction of quīnque (“five”) + uncia, and the coin had that pattern of dots on it to indicate its value. Uncia generally meant a twelfth of something. It was not just a twelfth of an as, but also a twelfth of a pound , which is where we get the word “ounce”, and a twelfth of a foot, which is where we get the word “inch”. The story I always heard about the connection between the coin and the X-shaped pattern of dots was the one that is told by Wikipedia:
Or the Big Dictionary:
But today I did Google image search for qunicunxes. And while most had five dots, I found not even one that had the dots arranged in an X pattern. (I believe the heads here are Minerva, goddess of wisdom. The owl is also associated with Minerva.) Where's the quincunx that actually has a quincuncial arrangement of dots? Nowhere to be found, it seems. But everyone says it, so it must be true. Addenda
[Other articles in category /history] permanent link Fri, 23 May 2025
The fivefold symmetry of the quince
The quince is so-named because, like other fruits in the apple family, it has a natural fivefold symmetry: This is because their fruits develop from five-petaled flowers, and the symmetry persists through development. These are pear blossoms: You can see this in most apples if you cut them into equatorial slices: The fivefold symmetry isn't usually apparent from the outside once the structure leaves the flowering stage. But perfect Red Delicious specimens do have five little feet: P.S.: I was just kidding about the name of the quince, which actually has nothing to do with any of this. It is a coincidence. [Other articles in category /bio] permanent link |