{"slug": "ai-assisted-technical-writing-when-to-stop", "title": "AI-Assisted Technical Writing: When to Stop", "summary": "A developer used multiple AI tools including Claude.ai, Google Gemini, Perplexity.ai, ChatGPT, and Microsoft CoPilot to turn a C++ code comment into a blog post, but the process revealed a technical error in the original comment and led to an editorial dispute over the post's length. The developer found that technical disagreements could be resolved by compiling the code, while editorial disagreements required clarifying the piece's purpose, highlighting the need to distinguish between factual and stylistic feedback when using AI for writing.", "body_md": "I had a comment in a C++ codebase explaining why a particular cast was\nwritten the way it was. The comment kept growing… and eventually it was\nlonger than the code it was documenting. So I did what seems like the\nobvious modern move: I asked Claude.ai to turn it into a blog post I\ncould link to instead, and pulled the explanation out of the code\nentirely.\n\nI’d have thought that would have been the end of it. *It wasn’t.*\n\nI showed the draft to Google Gemini for review. It found a real problem:\nnot a style nitpick, an actual technical error. And Gemini proposed a\nfix.\n\nBut when I tried the fix, *it didn’t compile.* Which meant my original\ncomment, the one I’d been confidently maintaining across code reviews\nfor who knows how long, had been wrong the whole time. Nobody had caught it\nbecause nobody had actually tried to compile the counterexample.\n\nSo the article went back to the drawing board. Then I showed *that*\nversion to more AIs: Perplexity.ai, ChatGPT, Microsoft CoPilot… and the\narticle started to spiral. Each pass surfaced something the previous\none had gotten subtly wrong or hadn’t considered. New names were coined\nfor things that turned out to need distinguishing. A whitelist\nmechanism got added so a shortcut I’d deliberately chosen for its\nruntime characteristics could be marked “checked” rather than\n“assumed.” By the end it had gone from a comment, to a blog post, to\nsomething that reads like a lab notebook.\n\nThe article itself is here, if you want the technical specifics\n*(it’s a kind of insane C++ pointer-cast rabbit hole and not the point of\nthis post)*:\n\n[https://ae1020.github.io/implicit-cast-vs-waypoint-cast/](https://ae1020.github.io/implicit-cast-vs-waypoint-cast/)\n\nHere’s the part I think is actually worth writing down, separate from\nany of that: **the disagreements in this process came in two completely\ndifferent flavors, and I didn’t notice how different they were until I\nwas deep into the second one.**\n\nThe first flavor had a referee. When an AI told me “hey, I have a\nbetter idea”, and it wasn’t, a compiler settled the argument in about\nten seconds. Nobody had to be persuaded of anything… the code either\ncompiled and did the right thing, or it didn’t. Every technical\ndispute in this process eventually resolved the same way: not by which\nAI sounded more confident, but by going and checking.\n\nThe second flavor didn’t have a referee. Once the technical content\nwas solid, I asked for opinions on the writeup itself, and got a real\nsplit. Some models (in particular ChatGPT and CoPilot) thought it was\nway too long *(many AI are generally asked to summarize, after all)*.\nClaude.ai thought the length was earning its keep by showing the\nmistakes happening rather than just asserting the fixed conclusion.\nNobody could compile their way to an answer about the length, because there\nisn’t a ground truth the way there is for “does this pointer get corrupted.”\nThat’s not a factual question. It’s a question about what the piece is *for*.\nIt turned out nobody (including me) had actually settled that before opinions\nstarted flying.\n\nWhat broke the deadlock wasn’t more argument. It was going back and\nasking what the thing was supposed to accomplish in the first place. I\nhadn’t set out to write something that would win points for concision on\na general audience – I’d set out to write something I could link from\na comment, for the **one** person, someday, who opens that file and wonders\nwhy the cast is written that way. Once that was explicit, most of the\nlength argument dissolved on its own. Some of it didn’t: a couple of\nthe “this is too much” critiques turned out to be right on their own\nterms, about naming things you don’t need to name, not about length at\nall. Those parts I kept.\n\nI think that’s the generalizable lesson, if there is one: **when you\ncan’t tell whether a disagreement is technical or editorial, that\nconfusion is itself worth stopping and naming**, because the two need\ncompletely different tools to resolve. One needs a compiler, or an\nexperiment, or a fact. The other needs you to say out loud what you’re\nactually trying to do. That’s weirdly easy to skip when everyone in the\nconversation (human or AI) jumps straight to optimizing before\nanyone’s confirmed what’s being optimized *for*.\n\nThere’s no compiler for “is this done.” At some point you just decide,\nand move on.\n\nSo once technical accuracy had reached consensus, the revisions to the\ncasting article stopped where **I, (the human), decided**. If you think it’s\ntoo long and the outcomes need summarization, just ask an AI. 🤖", "url": "https://wpnews.pro/news/ai-assisted-technical-writing-when-to-stop", "canonical_source": "https://ae1020.github.io/ai-writing-when-to-stop/", "published_at": "2026-07-18 13:01:39+00:00", "updated_at": "2026-07-18 13:21:22.670276+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-tools", "developer-tools", "large-language-models"], "entities": ["Claude.ai", "Google Gemini", "Perplexity.ai", "ChatGPT", "Microsoft CoPilot"], "alternates": {"html": "https://wpnews.pro/news/ai-assisted-technical-writing-when-to-stop", "markdown": "https://wpnews.pro/news/ai-assisted-technical-writing-when-to-stop.md", "text": "https://wpnews.pro/news/ai-assisted-technical-writing-when-to-stop.txt", "jsonld": "https://wpnews.pro/news/ai-assisted-technical-writing-when-to-stop.jsonld"}}