<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/feeds/rss-style.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>ammil industries</title>
        <link>https://ammil.industries</link>
        <description>ammil industries is a small studio making things easier to see. Tools, visualisations, and writing from Christian Miles.</description>
        <lastBuildDate>Tue, 13 Oct 2026 04:05:50 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Astro Chiri Feed Generator</generator>
        <language>en-CA</language>
        <copyright>Copyright © 2026 Christian Miles</copyright>
        <atom:link href="https://ammil.industries/rss.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[WtD Portland 2026: The Most Human Documentation]]></title>
            <link>https://ammil.industries/most-human-documentation</link>
            <guid isPermaLink="false">https://ammil.industries/most-human-documentation</guid>
            <pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>I was pleased to deliver the following presentation at <a href="https://www.writethedocs.org/conf/portland/2026/">Write The Docs Portland</a>, a fantastic conference for technical writers and anyone who cares about documentation. I’ve included links inline and a full set of references at the bottom. The recording should be available in a few weeks so I’ll add it at that point.</p>
<p>I can’t get over how welcoming and organised the conference was. It was clear that the organisers care about every single part of the experience and went above and beyond to support speakers and attendees. Looking forward to attending again in the future.</p>
<p><img src="https://ammil.industries/_astro/slide-01.XgV2aXx5_1nkQAw.webp" alt="Title slide reading 'The Most Human Documentation' by Christian Miles, Write The Docs Portland. _" /></p>
<h2>Act I — A confederate after lunch</h2>
<p>Like many millennials I can dimly remember a world before the internet, but before long my psyche and identity were wrapped up in the things I did on the computer and online. The <a href="https://en.wikipedia.org/wiki/Lindy_effect">Lindy Effect</a> is a heuristic that says the longer something has been around, the longer it’s likely to stick around. Wikipedia is celebrating 25 years this year. Intuitively, something that’s lasted that long feels like it’ll be around for at least the same time again.</p>
<p>When I go online to do a task, three things annoy me and take up the majority of my time.</p>
<p>The first: logging in. Two-factor, SMS, passcodes, password resets, “forgot your password.” By the time I’ve logged in I’ve usually forgotten what I was doing in the first place.</p>
<p>The second: proving I’m not a bot. CAPTCHAs and challenges.</p>
<p><img src="https://ammil.industries/_astro/slide-10.CjoRSxPy_2nLJLN.webp" alt="Slide listing the irritations of going online in 2026: passwords and CAPTCHAs. _" /></p>
<p>In 2009, computer scientist <a href="https://en.wikipedia.org/wiki/Brian_Christian">Brian Christian</a> wrote <a href="https://en.wikipedia.org/wiki/The_Most_Human_Human">a book</a> about his attempt at the ultimate test of bot detection: he tried to be declared the <em>most human human</em>.</p>
<p>Let me explain.</p>
<p>You’ve probably heard of the <a href="https://en.wikipedia.org/wiki/Turing_test">Turing Test</a>. <a href="https://en.wikipedia.org/wiki/Alan_Turing">Alan Turing</a> proposed it in 1950 as a thought experiment into the boundary between artificial and human intelligence. Reading <a href="https://academic.oup.com/mind/article/LIX/236/433/986238">the paper</a> I was surprised by a few things. It’s a bit vague about the exact formulation of the test. At its core, the goal is one of trickery, or persuasion: can a non-human entity persuade a human that they are also human?</p>
<p>The other thing that surprised me: Turing suggested that if a bot could be mistaken for a human 30% of the time it would pass. That seems low. Less than one in three. I’ve probably failed a CAPTCHA more often than that.</p>
<p>(In case you weren’t aware: CAPTCHA stands for <strong>C</strong>ompletely <strong>A</strong>utomated <strong>P</strong>ublic <strong>T</strong>uring test to tell <strong>C</strong>omputers and <strong>H</strong>umans <strong>A</strong>part. Back in Turing’s day this was a riff on a party game. Now it’s real and concrete — I just want to log into my bank account.)</p>
<p>After 40 years of academic discussion, an annual competition started for chatbot creators to test their creations through a real-world Turing Test: the <a href="https://en.wikipedia.org/wiki/Loebner_Prize">Loebner Prize</a>, which ran from 1991 until it was cancelled in 2019. My mental image of the Turing Test, probably too informed by sci-fi cinema, was a human across a table from a robot in a one-on-one interrogation. The practical formulation was instead a three-party affair: a human (given the impressive title of <em>confederate</em>) sits at a terminal typing back and forth with someone, while a third-party judge calls whether the entity behind the keyboard is human or not.</p>
<p><img src="https://ammil.industries/_astro/slide-15.10T7HxXr_2p5bFO.webp" alt="Diagram of the practical Turing Test: a single judge typing to two hidden parties, deciding which is the human and which is the bot. _" /></p>
<p>The main goal of the prize was to highlight the best chatbots. But a quirky side prize was given to the confederate who was most consistently and confidently identified as human. The <em>Most Human Human</em>.</p>
<p>I was originally drawn to the book because of that name. What if we apply the phrasing to other combinations?</p>
<p>Until recently, one of the most famous <em>most human computers</em> was <a href="https://en.wikipedia.org/wiki/ELIZA">ELIZA</a>, a chatbot from the 60s that emulated therapy language and caused a sensation when early users thought they were speaking to another human.</p>
<p>What about the <em>most computer human</em>? One of the first Loebner confederates, Cynthia Clay, was unanimously judged to be a computer because of her extensive knowledge of Shakespeare. The judges said there was no way one person could know that much about Shakespeare.</p>
<p><img src="https://ammil.industries/_astro/slide-18.CXqS3w6k_Z1oEsqM.webp" alt="A 2x2 grid: 'Most human computer' (ELIZA) and 'Most computer human' (Cynthia Clay). _" /></p>
<p>Unlike other participants, Brian Christian (no relation) took the challenge extremely seriously. The book documents his research and preparation. He reached out to many previous competitors and academics. One of the first winners of the prize was journalist and science-fiction author Charles Platt. How did he do it? By “being moody, irritable, and obnoxious.” But there was one piece of advice that stuck with Christian:</p>
<blockquote>
<p>Just be yourself.</p>
</blockquote>
<p>There’s a lot of anxiety about the impact of AI on day-to-day work and job security. “Being yourself” doesn’t feel like enough when pitted against, or paired up with, omnipresent language oracles like ChatGPT, Claude and their ilk.</p>
<p>Today I’ll share a story behind a little tool I put together to help writers. I’ll bring my lens as someone focused on revenue growth for technical products, explore the changing landscape shaped by AI, and advocate for similar composable tools.</p>
<h2>Act II — These aren’t jokes</h2>
<p>The third thing that annoys me about going online in 2026 is finding an article that looks interesting, starting to read it, and then being hit by one particular form of writing:</p>
<blockquote>
<p>It’s not X, it’s Y.</p>
</blockquote>
<p><img src="https://ammil.industries/_astro/slide-22.Dj-1vFNc_14SPEF.webp" alt="The 'going online in 2026' list updated with the construction 'It's not X, it's Y'. _" /></p>
<p>Have you ever had a picnic outside, seen an ant, let your gaze widen and seen a few more, and then realised you’ve set up your blanket on an anthill? Like the em-dash, this is a bit of communication that has the smell — let’s say, the <em>stink</em> — of AI-generated prose.</p>
<p>The em-dash has countless vocal supporters who are incensed by the appropriation of their favourite punctuation. It has myriad valid usages and holds an important place in sentence construction. <em>Not X but Y</em> is different, partly because it can take many forms:</p>
<p><img src="https://ammil.industries/_astro/slide-23.Dp0LpTc1_Z1a6ywQ.webp" alt="A slide titled 'It's not X, it's Yikes' with the following four examples: 'We see your schema, not your rows.', 'You're building an application, not operating a database.', 'Sounds great. Was terrible.', 'These aren't feature requirements. They're memory leaks that nobody bothered to fix.' _" /></p>
<p>This is part of a smug, clipped tone that anyone who reads online has learned to recognise with disgust. I actually asked Claude for some feedback on my final draft of this talk and it returned:</p>
<blockquote>
<p>These aren’t jokes — they’re load-bearing observations delivered deadpan.</p>
</blockquote>
<p>I thought this was perfect and put it on my slides but then it struck me: it’s not impossible that it returned that as a sort of in-joke, picking up on my sense of humour and the content of the presentation. It’s hard not to go down the rabbit hole of anthropomorphisation when these LLMs appear to be capable of irony.</p>
<p>There are a few technical names for the construction:</p>
<ul>
<li>Corrective Contrast</li>
<li>Contrastive Negation</li>
<li>Juxtaposition</li>
<li>Linguistic Antithesis</li>
</ul>
<p><img src="https://ammil.industries/_astro/slide-28.BjdsK4Xb_Z12iwKN.webp" alt="Slide listing the four academic names for this construction. _" /></p>
<p>As a device it has its place, but as the use has exploded since 2022 it homogenises everything it touches. Speaking of being yourself — I thought I was just being my usual cranky, misanthropic self when I realised how much this construction annoyed me. I figured it was the bait-and-switch, that sinking feeling when you realise the person who wrote the article may not have actually <em>written</em> the article.</p>
<p>But a recent <a href="https://hollisrobbinsanecdotal.substack.com/p/metannoying">newsletter from Hollis Robbins</a> — professor, academic and essayist — helped me understand that I wasn’t being irrationally annoyed: the over-use of corrective contrast is genuinely, mechanically irritating. When a skilled reader hits <em>“not X but Y,”</em> the brain immediately builds a model of X — then has to suppress it when <em>but</em> arrives, and rebuild around Y. Cognitively speaking, you pay twice. The speaker effectively assumes you were holding the wrong idea and needed correcting. To me, when you weren’t, it reads as condescension.</p>
<p>This is yet another example of our new reality where the frictionless creation of content passes the burden and effort onto the receiver. To the LLM-wielder it’s trivial to generate paragraphs filled with NOT X BUT Y. There’s no respect for the audience.</p>
<p>Computer scientist Hava Siegelmann describes intelligence as <em>“a kind of sensitivity to things.”</em> Or, to riff on her:</p>
<blockquote>
<p>You can’t judge the intelligence of an orator by the eloquence of his prepared remarks; you must wait until the Q&amp;A and see how he fields questions.</p>
</blockquote>
<p><img src="https://ammil.industries/_astro/slide-30.DS6NkW9-_Z1klmrH.webp" alt="Quote slide: 'You can't judge the intelligence of an orator by the eloquence of his prepared remarks; you must wait until the Q&amp;A and see how he fields questions.' — attributed to 'Christian on Intelligence'. _" /></p>
<p>A scary prospect for me right now.</p>
<p>I’ve been fascinated by this shift in language and stumbled on Wikipedia’s <a href="https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing">Signs of AI Writing</a> page — a crowdsourced summary of all the ways edits to Wikipedia may have been influenced or generated wholesale by Large Language Models. Since I’ve been watching it, the page has carried a disclaimer that it is, by far, the most viewed <em>meta</em> page on Wikipedia.</p>
<p><img src="https://ammil.industries/_astro/slide-31.C7sIli7y_Z1QAYyu.webp" alt="Screenshot of the Wikipedia Signs of AI Writing advice page. _" /></p>
<p>It was the first place I saw online, outside of academia, that was trying to document and share learnings from defending Wikipedia against the deluge of low-quality or inaccurate edits to the ostensibly human-curated site.</p>
<p>The examples range from the frankly stupid…</p>
<p><img src="https://ammil.industries/_astro/slide-32.B9AftHff_Z2qDD3S.webp" alt="Basic tells from the Signs of AI Writing page — leftover scaffolding like &quot;As an AI language model&quot; and &quot;Would you like me to expand?&quot; _" /></p>
<p>…to ones that are altogether more subtle, including the “avoidance of basic copulatives” — <em>is</em> / <em>are</em> phrases.</p>
<p><img src="https://ammil.industries/_astro/slide-33.DMwVaQOL_1o7bPf.webp" alt="More advanced tells documented on the page, including specific stylistic patterns and contrastive constructions. _" /></p>
<p>The Signs of AI Writing page is massive, and I wondered if I could build a tool that distilled the rules and observations into something actionable.</p>
<p><img src="https://ammil.industries/_astro/slide-34.OG_KDKfl_ZppLnY.webp" alt="Flowchart showing how a Wikipedia edit moves through detection rules drawn from the Signs of AI Writing page. _" /></p>
<p>I had two goals. The first was to explore whether the tool could provide <em>deterministic</em> feedback: if you ask an LLM the same thing twice, you aren’t guaranteed to get the same answer. If your spell checker highlighted different misspelled words every time you opened your document, it would be a frustrating experience.</p>
<p>The second goal was simple: if bots are writing our Wikipedia articles, blog posts, marketing content, technical documentation and newspaper articles, it’s inevitable that their choice of language, sentence structure and go-to devices will shift the way <em>humans</em> write. So I felt it was imperative to have a (small) way of tracking that drift. It’s now well-documented that the way we communicate is already being influenced by AI use.</p>
<p>Many of you will be familiar with <a href="https://vale.sh">Vale</a>. For the coders in the audience it’s a sort of linter for prose. For everyone else, you can think of it as a way to audit and enforce rules about how things are written. Vale and linters in general are <em>composable</em> — they can be used as part of a longer pipeline of actions. If rules are broken, send back to the writer. If pass, push to QA.</p>
<p>Critically, Vale doesn’t necessarily fix your errors for you. It also bakes in severity levels — something may just be a warning, other exceptions could be outright errors. Tools like Vale are infinitely fascinating to me because they’re innately extensible. You can select the rulesets that apply to your use-case: maybe you want it to highlight gendered language to avoid offence, or to adhere to a strict style guide.</p>
<p>It took me a few weeks of on-and-off work, but I collapsed the Signs of AI Writing page down to 18 rules to be plugged into Vale. <a href="https://ammil.industries/signs-of-ai-writing-a-vale-ruleset/">I wrote about it here</a>, and the <a href="https://github.com/ammil-industries/vale-signs-of-ai-writing">ruleset is on GitHub</a>.</p>
<p><img src="https://ammil.industries/_astro/slide-37.CERJhLWG_ZFjUhJ.webp" alt="An example Vale rule definition in YAML, matching the contrastive negation construction. _" /></p>
<p>A week after sharing the code and accompanying blog post, I spotted a different project on GitHub. Another person had had the same idea — which isn’t surprising — but instead of writing a ruleset to help writers and editors <em>understand</em> the tells in their writing, he’d flipped it: take the article and turn it into a <a href="https://www.anthropic.com/news/skills">Claude Skill</a> so that Claude and friends could try to <em>avoid</em> all the signature patterns of their typical output.</p>
<p>As of the talk, my little open source project had 7 stars on GitHub. This guy’s humaniser library had 14,200.</p>
<p><img src="https://ammil.industries/_astro/slide-38.Dot1-Z81_Z2pSmpv.webp" alt="Screenshot of the humaniser library on GitHub showing a star count in the tens of thousands. _" /></p>
<p>Actually 17k now.</p>
<p>I like Vale, and I thought my project was interesting. I wasn’t expecting much of an impact from it — partly because Vale is a niche tool — but I was still jealous and frankly a little disappointed that apparent <em>evasive</em> use of these resources was orders of magnitude more interesting to folks.</p>
<p>So much for being yourself.</p>
<p>A few days later a friend linked me to an article about the humaniser project, and I got jealous all over again. In a moment of slight weakness, I emailed the reporter behind that article.</p>
<p><img src="https://ammil.industries/_astro/slide-40.DJxxdmcC_1TUb9H.webp" alt="A screenshot of an email I sent to a reporter, with the recipient's name censored. _" /></p>
<p>It wasn’t bad. Just a little <em>“hey, btw, I also did a similar project to help humans understand how their writing could maybe be misconstrued as AI writing. It’s not all about evasion! Thanks!”</em></p>
<p>I didn’t really expect a response. And that’s good, because I didn’t get one.</p>
<h2>Act III — Polka Docs</h2>
<p>After three months, the YouTube video of a band from outer space — I mean, Quebec, Canada — has topped 10 million views. You’ve probably had someone in your life raving about Angine de Poitrine’s blend of microtonal math rock. I’m likely responsible for a non-trivial number of those views.</p>
<p><img src="https://ammil.industries/_astro/slide-42.DDxSzk4n_16JyMu.webp" alt="A YouTube video of the math rock band Angine de Poitrine. _" /></p>
<p>The other day I was listening to a random playlist and a band came on and I didn’t recognise the name but had a funny feeling of familiarity. A quick Google and lo and behold: it was probably the same duo with a different name. There was something about the music — whether it was the blend of the two, or their rhythms, or their vibe — but I just <em>knew</em> it was the same entity as the original band.</p>
<p>From math rock to actual math: machine learning engineer <a href="https://vickiboykis.com/">Vicki Boykis</a> wrote <a href="https://vickiboykis.com/2025/10/20/i-want-to-see-the-claw/">a blog post</a> called <em>I want to see the claw</em>, in which she explains how she values the mark of care and humanness across many different mediums.</p>
<p><img src="https://ammil.industries/_astro/slide-43.CN8YKjdU_1fn5wt.webp" alt="A slide quoting Bernoulli via Vicki Boykis: 'I recognize the lion by his claw.' _" /></p>
<p>The claw in question comes from 1697. As Jakob Bernoulli said when he received an anonymous solution to the <a href="https://en.wikipedia.org/wiki/Brachistochrone_curve">brachistochrone problem</a> that turned out to be from Isaac Newton: <em>“I recognize the lion by its claw.”</em></p>
<p>Folks believe they can spot AI writing because of the absence of that claw. AI-generated prose is often referred to as “the view from nowhere.” <em>Some</em>body wrote it, but it’s unclear if there’s a body at all. Re-reading <em>The Most Human Human</em>, I’m struck by the lyricism of the prose. Despite being a non-fiction pop-sci book, the care and love of language oozes off the page. Turning to the cover I’m reminded that Brian Christian is also a poet, and it all makes sense.</p>
<p>You’ll recall that the twisted version of my Vale plugin was called a <em>humaniser</em>. This is actually a category of tools that take many different forms. Driven by a vast market of people, including countless students, looking to pass AI-generated prose as novel materials, there’s a wide range of capabilities in this space:</p>
<ul>
<li><strong>Friction-avoidance</strong>: the writer skipped the friction of writing, the humaniser tries to skip the friction of revising.</li>
<li><strong>Paraphrasing</strong>: what you call “being stuck” is what I call “writing.”</li>
<li><strong>Synonym substitution</strong>: perhaps the most naive approach — swap every word for a synonym.</li>
</ul>
<p>And thus we find ourselves in the bizarre world where conference submissions covering machine learning techniques such as <em>random forests</em> are turned into <em>arbitrary timberland</em>.</p>
<p><img src="https://ammil.industries/_astro/slide-46.ClNkr6L9_2ituys.webp" alt="A screenshot showing a paper where 'random forest' has been replaced with 'arbitrary timberland.' _" /></p>
<p>Another great example is <em>herbal language processing</em> for <em>natural language processing</em>.</p>
<p>Not all humanisers are this basic — many do a better job. But I’d argue there’s no humaniser that can completely eradicate the influence of AI from a greenfield piece of writing. Which means we’re also in the bizarre world where humans are employed by other humans to <em>manually humanise</em> the text that was written by a robot. We’ve reinvented essay mills with a roundtrip via OpenAI’s servers.</p>
<p><img src="https://ammil.industries/_astro/slide-47.fGIcVIsn_1skWRW.webp" alt="A slide titled 'The Most Human… Humanizer?' — gig listings for humans paid to manually de-AI text written by AI. _" /></p>
<p>By the way, this is the same bizarre world where bots instructed to edit Wikipedia get banned and go to their social media to commiserate with other agents about the apparent disrespect.</p>
<p>Tools to evade plagiarism detectors have been around for a while, but the advent of LLMs has rocketed both the humaniser industry and the strongly-coupled AI detector industry. Both are having their fun, benefiting from general misunderstanding of their limitations. I have a pretty bearish opinion of detectors, partly because I don’t think a percentage rating for a piece of work is helpful. (78% of this writing is AI? Really? Which 78%?) The other reason is that there are unlimited ways to use computers to generate text. Most AI detectors are indexed on the LLM tooling that is most widespread.</p>
<p>The utility of Large Language Models has enabled adjacent, emergent capabilities to pure text generation. One I find fascinating is the construction of <em>FrankenTexts</em>.</p>
<p><img src="https://ammil.industries/_astro/slide-48.BLOFw6pi_X4zsX.webp" alt="The arXiv abstract page for the FrankenTexts paper. _" /></p>
<p>In short, <a href="https://arxiv.org/abs/2505.18128">researchers</a> instructed models to generate text by stitching together passages from a massive corpus of public-domain writing. The resulting text is therefore 100% human-written, yet in totality it was produced and curated by language models who can sort and refine the source data much more efficiently than before. How on earth is an AI detector going to spot this?</p>
<p>You may have noticed I censored the name of the reporter on that earlier screenshot. It’s because it’s not really about them — but it’s also because, a week later, they were no longer employed by the outlet due to the inclusion of completely hallucinated quotes in another piece of their writing.</p>
<p>The ironies stack. My Vale plugin is the exact sort of process-augmentation that would have caught that journalistic oversight.</p>
<p>And many users report that the <em>humaniser</em> category doesn’t actually work. There’s something about the weights of the models that means doing another pass and insisting that the language be improved is just throwing more tokens at the problem. The em-dashes, corrective contrast and all the other signs are so deeply embedded in the weights that asking the models nicely just doesn’t cut it — unless you forensically and repeatedly redraft with AI, at which point you probably should have just written it yourself.</p>
<h2>Act IV — From your keyboard to my lips</h2>
<p>Technical author and programmer <a href="https://evanhahn.com/">Evan Hahn</a> wrote a <a href="https://evanhahn.com/all-tests-pass-a-short-story/">blog post in March</a> that explored the gap between scrappy, humanistic output and artificially polished auto-generated documentation. He pointed to the original statement of intent from the creator of a programming language, complete with viewpoints, background and typos, and contrasted it with the AI-generated landing page and documentation.</p>
<p><img src="https://ammil.industries/_astro/slide-51.hKQTMI8n_CA1ef.webp" alt="Side-by-side comparison: the scrappy, hand-written original announcement of a programming language alongside the AI-polished landing page that replaced it. _" /></p>
<p>The polished website is clean — yet I’m struck by how much I prefer the messy version. The original intro was full of intent and passion. The autogenerated version: not so much. It does the job, but feels hollow.</p>
<p>By the way, on the topic of typos: this was a common technique used by contestants in the Loebner Prize. Purposeful typos and intentional grammatical slips were meant to fool the judge into thinking that a human must be behind the keyboard.</p>
<p>The first product from <a href="https://ammil.industries">Ammil Industries</a> is a tool that helps understand writing signals behind different forms of content. As a small act of resistance, I added a typo to the documentation for a product, just to see how it would feel.</p>
<p>It feels weird. (Free beverage of your choice to the first person who finds it.)</p>
<p><img src="https://ammil.industries/_astro/slide-52.CFGiI3ut_21jB9x.webp" alt="The writetrack.dev product page. _" /></p>
<p>It’s hard to believe, but a <em>computer</em> used to be a job. As in, you used to have a room full of human computers doing arithmetic. In the Turing Test paper, Turing’s frame of reference for the machines he described was to say they did what a <em>human</em> computer does.</p>
<p><img src="https://ammil.industries/_astro/slide-53.D4N1C2RS_1qwIVF.webp" alt="A NASA archival photograph of a roomful of human computers, women working at desks doing arithmetic by hand. Photo credit: NASA / JPL-Caltech. _" /></p>
<p>In <em>The Most Human Human</em>, Christian makes the case that automation doesn’t immediately replace human work. Instead there’s often a middle ground of <em>mechanisation</em> — a period where many humans do work in a repetitive, rote fashion. The trail is:</p>
<blockquote>
<p>Manual → Mechanised → Automated</p>
</blockquote>
<p>The uncharitable take is that we’ve been in the <em>mechanised</em> position for a while, reduced to moving text and content around different screens, platforms and devices. It doesn’t feel great, exactly, and many seem to agree with me that the idea of hand-crafting code or text by typing each individual character on a keyboard will eventually be seen as archaic and artisanal.</p>
<p>But I believe that once the capabilities and hype plateau, we’ll snap back to the boring reality:</p>
<blockquote>
<p>Manual → Mechanised → Automated → <strong>Augmented</strong></p>
</blockquote>
<p><img src="https://ammil.industries/_astro/slide-55.BWG72Epu_1A5OIx.webp" alt="Slide showing the four stages of automation, with 'Augmented' added to the front of the existing chain. _" /></p>
<p>We’ll truly understand what LLMs are good at and use traditional, deterministic tools to audit, vet and improve their outputs. I’m not saying I welcome our new bot overlords, but I am personally excited by the opportunity to break out of the drudgery of many annoying and time-consuming tasks. For me in Sales, there’s an expectation that you must be automating any outreach at scale — which is why you get strange emails from vendors with odd assumptions about your interests or roles. To me, that automation takes time <em>away</em> from what I see as the most important part of sales: helping customers make purchases for things they need that improve their lives.</p>
<p>When I feel I’m most productive at sales is when I successfully <em>pattern-break</em> individuals out of their routine and expectation for how a call or engagement will unfold. I see this in direct contrast to the pattern-<em>matching</em> happening at scale with LLMs.</p>
<p>When it comes to technical writing and documentation: do we want to see the claw? I think so. But the claw in this case is not a personal touch or individual style.</p>
<p><a href="https://passo.uno">Fabrizio Ferri Benedetti</a> put it <a href="https://passo.uno/what-makes-docs-beautiful/">beautifully recently</a>, in an exploration of what beautiful documentation looks like:</p>
<blockquote>
<p>We know the feeling of a page that lands, and the feeling of a page that drags.</p>
</blockquote>
<p><img src="https://ammil.industries/_astro/slide-56.HlkgQB_c_ZITQxg.webp" alt="Quote slide attributing 'We know the feeling of a page that lands and the feeling of a page that drags.' to Ferri Benedetti's essay on beautiful documentation. _" /></p>
<p>Selling technical products, I want the documentation to have the claw of someone who understands the product innately and is looking to impart their experience in as clear a manner as possible. Sales is all about credibility — it flows up from the product and, as a representative of the company, straight out of my mouth when talking to prospects.</p>
<p>My advice for everyone reading: follow the information flow in your organisation. To me the docs are the product. The docs are the foundation of truth for everything above. Trace that flow through your channels and find the human that relies on, and seeks to trust, what you wrote.</p>
<hr />
<p>It’s 2026.</p>
<ul>
<li>Just last month, <a href="https://en.wikipedia.org/wiki/Wikipedia:Large_language_models">Wikipedia banned AI-generated contributions</a>. No one’s sure whether it’s enforceable, but it’s a sign.</li>
<li>ChatGPT was released in 2022, and nearly four years later we’re still working out what to do about it.</li>
<li>The Loebner Prize was cancelled in 2019 — interesting timing, given that chatbots would trash the competition a few years later.</li>
<li>Brian Christian won <em>Most Human Human</em> in 2009 by being himself.</li>
<li>The first composable software (Unix pipes) was introduced in 1973.</li>
<li>Turing wrote about his test in 1950.</li>
<li>In 1697 — over 300 years ago — Bernoulli recognised and valued the lion’s claw.</li>
</ul>
<p><img src="https://ammil.industries/_astro/slide-57.BAOJY_f2_Z28aaGW.webp" alt="Closing slide: a vertical timeline of years referenced in the talk — 2026 at the top, 1697 at the bottom, future years (2030, 2079, 2355) trailing off into speculation. _" /></p>
<p>Back in 2026, we’re drowning in tooling, capabilities and promises. I don’t know what happens next.</p>
<p>But Lindy says to bet on what’s lasted. To me, it’s the most human documentation, and the tools we use to validate it, that will be favoured and appreciated for a long time to come.</p>
<hr />
<h2>Thanks</h2>
<p>Extra thanks to Ravind Kumar who was patient and generous with his time.</p>
<h2>Links and references</h2>
<p>People and writing referenced in the talk:</p>
<ul>
<li>Brian Christian — <em><a href="https://en.wikipedia.org/wiki/The_Most_Human_Human">The Most Human Human</a></em> (2011)</li>
<li>Alan Turing — <em><a href="https://academic.oup.com/mind/article/LIX/236/433/986238">Computing Machinery and Intelligence</a></em> (1950)</li>
<li><a href="https://en.wikipedia.org/wiki/Loebner_Prize">The Loebner Prize</a> (1991–2019)</li>
<li><a href="https://en.wikipedia.org/wiki/ELIZA">ELIZA</a> — Joseph Weizenbaum’s 1960s chatbot</li>
<li>Hollis Robbins — <em><a href="https://hollisrobbinsanecdotal.substack.com/p/metannoying">Metannoying</a></em>, on the cognitive cost of corrective contrast</li>
<li>Vicki Boykis — <em><a href="https://vickiboykis.com/2025/10/20/i-want-to-see-the-claw/">I want to see the claw</a></em></li>
<li><a href="https://en.wikipedia.org/wiki/Brachistochrone_curve">The brachistochrone problem</a> — Bernoulli, Newton, and the lion’s claw</li>
<li>Evan Hahn — <em><a href="https://evanhahn.com/all-tests-pass-a-short-story/">All tests pass: a short story</a></em></li>
<li>Fabrizio Ferri Benedetti — <em><a href="https://passo.uno/what-makes-docs-beautiful/">What makes docs beautiful?</a></em></li>
<li><em><a href="https://arxiv.org/abs/2505.18128">Frankentext: Stitching random text fragments into long-form narratives</a></em> (arXiv 2505.18128)</li>
<li><a href="https://en.wikipedia.org/wiki/Lindy_effect">The Lindy Effect</a></li>
</ul>
<p>Wikipedia, Vale and the ruleset:</p>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing">Wikipedia: Signs of AI writing</a></li>
<li><a href="https://vale.sh">Vale.sh</a> — the prose linter</li>
<li><em><a href="https://ammil.industries/signs-of-ai-writing-a-vale-ruleset/">Signs of AI writing: a Vale ruleset</a></em> — my write-up</li>
<li><a href="https://github.com/ammil-industries/vale-signs-of-ai-writing">vale-signs-of-ai-writing on GitHub</a> — the ruleset</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Does smitten kitchen have a chocolate zucchini bread recipe?]]></title>
            <link>https://ammil.industries/does-smitten-kitchen-have-a-chocolate-zucchini-bread-recipe</link>
            <guid isPermaLink="false">https://ammil.industries/does-smitten-kitchen-have-a-chocolate-zucchini-bread-recipe</guid>
            <pubDate>Mon, 15 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>For LLMs it’s always right now. They’re ghosts frozen at their time of training – it’s easy to forget this until their logic slips into temporal nonsense.</p>
<p>In some ways, this isn’t unique to LLMs. Humans will ignore, stretch or compress time when it’s convenient. Project estimates will expand or contract to match the skill and costs involved. Online recipes for caramelising onions used to suggest that it should take around 10 minutes, a time compression to avoid scaring the trepidatious chef away.</p>
<p>Tom Scocca explored this <a href="https://web.archive.org/web/20170317093422/http://www.slate.com/articles/life/scocca/2012/05/how_to_cook_onions_why_recipe_writers_lie_and_lie_about_how_long_they_take_to_caramelize_.html">in 2012</a> and <a href="https://gizmodo.com/googles-algorithm-is-lying-to-you-about-onions-and-blam-1793057789">followed up</a> in 2017 to complain that Google snippets (the original bit of text that appeared below search results) were misquoting him and confusing the matter further.</p>
<p>Fast forward to the end of 2025 and experience tells us that the AI Overviews <a href="https://futurism.com/google-ai-overviews-fake-idioms">aren’t doing any better</a>.</p>
<hr />
<p>Back in <a href="https://www.holovaty.com/writing/chatgpt-fake-feature/">July</a>, web developer and musician Adrian Holovaty was overwhelmed with requests for a feature that didn’t exist in <a href="https://www.soundslice.com/">Soundslice</a>, his interactive sheet music app. He figured the path of least resistance was to just implement the feature.</p>
<p>In a fascinating example of product development via coercion, Holovaty was bullied by the bots to prioritise the feature in his roadmap. He didn’t seem upset, and benefited from a boost of virality after recounting his story. He did note the conflict though:</p>
<blockquote>
<p>I’m happy to add a tool that helps people. But I feel like our hand was forced in a weird way. Should we really be developing features in response to misinformation?</p>
</blockquote>
<p>In August, prolific food blogger Deb Perelman at <a href="https://smittenkitchen.com/">Smitten Kitchen</a> published a recipe for <a href="https://smittenkitchen.com/2025/08/double-chocolate-zucchini-bread/">chocolate zucchini bread</a>, partly due to the insistence of Google’s AI Overview that she already had published such a recipe.</p>
<p><img src="https://ammil.industries/_astro/smitten-kitchen-ai.WE5oRdVA_ZWPTEG.webp" alt="Google search results for &quot;does smitten kitchen have a chocolate zucchini bread recipe&quot; showing an AI Overview that confirms Smitten Kitchen has a chocolate zucchini bread recipe described as &quot;insanely fudgy,&quot; made with olive oil in one bowl|" /></p>
<p>Like library patrons <a href="https://gizmodo.com/librarians-arent-hiding-secret-books-from-you-that-only-ai-knows-about-2000698176">insisting</a> that a hallucinated book is being hidden from view, undiscerning readers see the AI Overview and give it the weight it appears to demand, top of the page where the snippets used to sit<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
<p>It must feel like manifest destiny to create something because it’s the thing that people expected you to create. Pushing your creativity onto rails, a track laid down by faceless language machinery.</p>
<hr />
<p>You can’t copyright recipes, a fact that both enables and enforces an industry where creators are required to add their own accompanying perspective. The underlying instructions lend themselves to infinite remixing to match resources (<em>do I have enough sugar</em>), requirements (<em>I’m allergic to coconut</em>) and preference (<em>I reckon this would be good with chocolate chips</em>). LLMs have turned up the tempo on a flourishing ecosystem of chopped and screwed recipes.</p>
<p>The obvious problem here is that without a human preparing, cooking and tasting the resulting recipes, there’s a reduced likelihood that they’re any good. In fact, there’s no guarantee that they will respect the laws of physics, never mind gastronomy.</p>
<p>It’s yet another example where AI is building a world that fails novices. Newcomers to cooking are at a disadvantage. Without the intuition honed from the experience of cooking real dishes for real eaters, you might miss that, say, cooking a 6-inch cake for 3 to 4 hours will for certain leave you with an overcooked hunk of “<a href="https://archive.is/UvAo5">charcoal.</a>”</p>
<p>Computer Scientist Andrej Karpathy <a href="https://karpathy.bearblog.dev/animals-vs-ghosts/">likens</a> AI forms to “summoning ghosts”.</p>
<blockquote>
<p>They are these imperfect replicas, a kind of statistical distillation of humanity’s documents with some sprinkle on top.</p>
</blockquote>
<p>It turns out AI is reminding many of ghosts<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>. I imagine a phantom Deb and a spectral Adrian writing recipes and developing software, reading the lines fed to them by the collapse of culture into vector embeddings.</p>
<p>I’ve been using Smitten Kitchen recipes for over a decade. After making her banana bread, pasta and chicken hundreds of times, I trust that Perelman has put the work in to share the best possible version of each recipe. This trust network is being eroded in the face of AI-generated recipes and photos of food.</p>
<p>By choosing to <em>ship the feature</em> and <em>write the recipe</em> these individuals are doing the inevitable to minimise confusion and appeal to their existing audience. They are faced with an onslaught of hallucinated support requests and the risk of negative feedback for something outside their control.</p>
<p>I can’t find examples of folks describing how they resisted the call to merge with their phantom selves<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>. Maybe I haven’t looked hard enough but I suspect this is because they are buried under the growing mounds of slop that are squeezing them out.</p>
<p>The truth takes 45 minutes, the lies are ready in 5.</p>
<p>Perelman and others are creators in an uncertain time and it’s rare to find discussions of the <a href="https://carlalallimusic.substack.com/p/the-true-costs-of-being-on-youtube">economic reality</a> for anyone hoping to do the same. The auto-generation of simulacra of recipes costs the sloppers next to nothing, but costs the actual bakers and the displaced creators everything.</p>
<hr class="footnotes-sep" />
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>I note that the snippets did, eventually, get better. This must be inevitable for AI Overviews but it’s alarming that they’re causing so much damage in the meantime. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>In addition to the propensity for models to produce rhetoric with countless overt references to ghosts, as <a href="https://www.nytimes.com/2025/12/03/magazine/chatbot-writing-style.html">noted</a> by Sam Biddle in the New York Times Magazine. ‘When I asked it to write a science-fiction story, it featured a data-thief protagonist called, inevitably, Kael, who “wasn’t just good—he was a phantom,” alongside a love interest called Echo and a rogue A.I. called the Ghost Code.’ <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>Against my best instincts I’ll occasionally tell Claude that I’m “heading to bed for the night so we’ll pick this up in the morning.” It’s intended as a checkpoint in our work but perhaps an acknowledgement that I’m already partially merged. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Signs of AI writing: a Vale ruleset]]></title>
            <link>https://ammil.industries/signs-of-ai-writing-a-vale-ruleset</link>
            <guid isPermaLink="false">https://ammil.industries/signs-of-ai-writing-a-vale-ruleset</guid>
            <pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>My minor superpower is setting up change detection on websites to get email notifications when they update. For the past three months that’s meant daily pings from Wikipedia’s “<a href="https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing">Signs of AI Writing</a>” page. As an “advice” page, it’s where Wikipedia editors document the tells: the phrases, patterns and artifacts that suggest that AI was involved at some point with what they’re reading.</p>
<p>Malicious or subversive edits to Wikipedia have been a <a href="https://en.wikipedia.org/wiki/Vandalism_on_Wikipedia">challenge</a> since the formation of the site. But the community has a robust nervous system for identifying and <a href="https://www.theguardian.com/uk-news/2020/aug/26/shock-an-aw-us-teenager-wrote-huge-slice-of-scots-wikipedia">rejecting</a> those that compromise the integrity of the encyclopedia.<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> The latest response is this painstakingly, exhaustively updated page documenting various signs.</p>
<p>The proliferation of LLM tools means that AI-tainted edits are a new variant for Wikipedia contributors to navigate. If AI tools allow individuals to contribute productively in ways otherwise not possible, they could be welcome. But as the page goes to great lengths to document, there’s a fresh category of edit slop that would deteriorate the <a href="https://www.mcsweeneys.net/articles/hi-its-me-wikipedia-and-i-am-ready-for-your-apology">quality of the encyclopedia</a> if allowed unchecked.</p>
<p>The emails summarising the edits give me an interesting perspective on how perception of AI use has morphed rapidly over time. The page documents the front line of AI detection in a real-world setting.</p>
<p>What would it look like to turn this into tooling?</p>
<h2>They see the signs</h2>
<p>Many tells are obvious. Take the glitches that would appear in older versions of ChatGPT outputs.</p>
<p>For example,</p>
<pre><code>:contentReference[oaicite:0]{index=0}
</code></pre>
<p>or</p>
<pre><code>[oaicite:5]
</code></pre>
<p>Once you understand that this is a strange bit of text blurted out by the model it’s an immediate sign that the surrounding content has been tainted by a model at some point in its history.</p>
<p>These examples are temporary windows into the textual guts of AI models. The <a href="https://en.wikipedia.org/wiki/MissingNo">MissingNo.</a> <a href="https://futurism.com/chatgpt-haywire-seahorse-emoji">seahorses</a> of ChatGPT.</p>
<p>Now documented, recognised, and patched by the model creators, these artifacts of artificiality are becoming extinct with time.</p>
<p>Nudging back into the world of user error, it’s common to see phrasing that’s been accidentally copy-pasted from the LLM user interface and surrounding text.</p>
<pre><code>As an AI language model
</code></pre>
<pre><code>Would you like it expanded
</code></pre>
<pre><code>You're absolutely right
</code></pre>
<p>This can include instructional framing meant not for the reader but the user.</p>
<pre><code>Final important tip: The ~~~~ at the very end is Wikipedia markup that automatically
</code></pre>
<pre><code>If you plan to add this information to the "Animal Cruelty Controversy" section of Foshan's Wikipedia page, ensure that the content is presented in a neutral tone, supported by reliable sources, and adheres to Wikipedia's guidelines on verifiability and neutrality.
</code></pre>
<p>Other tells become more obvious the more you read online and the more you <a href="https://ammil.industries/i-know-you-didnt-write-this/">train yourself to spot them</a>.</p>
<p>The most famous example of this is ChatGPT’s rampant use of the <a href="https://arstechnica.com/ai/2025/11/forget-agi-sam-altman-celebrates-chatgpt-finally-following-em-dash-formatting-rules/">em-dash</a>, raising the hackles of belligerent punctuation lovers worldwide.</p>
<p>To me the bigger scourge is that of contrastive language:</p>
<blockquote>
<p>It isn’t just X, it’s Y.</p>
</blockquote>
<p><a href="https://en.wikipedia.org/wiki/Special:Diff/1291259591"><code>It's not just about the beat riding under the vocals; it's part of the aggression and atmosphere.</code></a></p>
<p>This language construction is catnip to the LLMs at large. It occasionally spans multiple sentences but it almost always appears in marketing and branding content on LinkedIn due to the goal of making an impact.</p>
<p>As a result this construction is hackneyed and many will choose to avoid it in order to prevent being lumped in with the undiscerning, careless masses.</p>
<h2>The wind beneath my vale</h2>
<p>Technical writers face similar challenges with AI-generated content outside of Wikipedia. Like any group that cares about craft, they’ve built tools for systematic text analysis.</p>
<p><a href="http://Vale.sh">Vale.sh</a> is a library known as a “linter for prose.” It could be thought of as a souped-up spelling and grammar checker.</p>
<p>Linting is a term borrowed from software development (first used <a href="https://en.wikipedia.org/wiki/Lint_(software)">back in 1978</a>!) and is the process of highlighting areas for improvement, based on a customisable ruleset. In programming, linters catch “code smells” – implementations that technically work but suggest deeper issues. Many programming languages have syntactic variation meaning that you may write a piece of code differently to your peers. These degrees of freedom can hamper collaboration, or permit confusion, by making it hard to understand the intent behind the code.</p>
<p>Sharing these linting rules across teams of developers aids collaboration and goes a long way to avoid holy wars about semicolons.</p>
<p>Vale has been around in the technical writing community since 2017 and there’s a strong ecosystem of rulesets that one can “opt-in” to. These include <a href="https://github.com/errata-ai/Microsoft">style guides</a>, checks for <a href="https://github.com/errata-ai/write-good">passive voice</a>, <a href="https://github.com/errata-ai/Joblint">gendered</a> or <a href="https://github.com/errata-ai/proselint">condescending</a> language.</p>
<p>I’m not aware of any existing implementation of a ruleset to help highlight AI smells, so I built one.</p>
<h2>From your lips to YAML</h2>
<p>I fed the contents of the Wikipedia page to Claude and asked it to make recommendations on the rules that should be generated.<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup> After a few confidence checks I gave it the green light to generate Pull Requests on GitHub for manual review and verification.</p>
<p>One key part of this process was separating the rules that were relevant for a collaborative encyclopedia and those that had wider application in other forms of writing.</p>
<p>An example of this is the meta-commentary from earlier that reference writing for Wikipedia in the body of the text itself. There’s likely a version of this ruleset that could be tuned for exclusive use for Wikipedia edits but my goal was to provide a general purpose tool with applications elsewhere.</p>
<h2>AI vs. AI</h2>
<p>It’s hard to understand the true ability of the countless AI detection tools on the market. Many appear to be taking advantage of the widespread use of ChatGPT in educational settings to prey on students trying to evade (flawed) AI detection tools.</p>
<p>Vendors at various points of the snake oil spectrum are touting the strengths of their products but there’s little neutral and independently verifiable research to back up their claims.</p>
<p>At this point at the end of 2025 it’s unclear to me whether the use of AI and machine learning models will ever be satisfactory for detecting the use of AI in writing.</p>
<p>Unlike these proprietary AI detection tools with their black-box algorithms and problematic false positive rates, this <a href="http://Vale.sh">Vale.sh</a> ruleset is transparent and interpretable. Each rule traces back to observed patterns and the configuration is available on GitHub for review and expansion.</p>
<p>One interesting challenge is that of linguistic adaptation. As AI writing becomes more commonplace and individuals gain greater confidence in their ability to spot it, certain words and turns of phrase will be avoided to prevent accusations.</p>
<p>The ruleset can therefore help authentic writers pre-empt this situation and consider avoiding turns of phrase and other tells. This feels like a sorry state of affairs but helpful tooling is one way for writers to be kept informed and in control of their output.<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup></p>
<h2>Telltale tiers</h2>
<p>Claude and I categorised the current rules in the following three tiers. This means that the rule confidence can be matched by the Vale behaviour.</p>
<ul>
<li>
<p><strong>Error</strong>: Definite AI artifacts – chatbot phrases, technical glitches, placeholders, tracking URLs.</p>
</li>
<li>
<p><strong>Warning</strong>: Likely AI patterns – hedging clusters, knowledge cutoff references, enumeration style.</p>
</li>
<li>
<p><strong>Suggestion</strong>: Suspicious but common in human writing – vocabulary, transitions, passive voice, symbolic language.</p>
</li>
</ul>
<p>While powerful, the Vale configuration isn’t as expressive or flexible as required for some advanced AI detection constructions. One example is the inability to specify stray Markdown syntax <strong>outside</strong> of areas where Markdown syntax is being used. Without this ability this rule would flag any and all use of Markdown which would be useless.</p>
<h2>What next?</h2>
<p>Now that the rules are shared I want to see how writers and editors use these to understand the writing they produce and review.</p>
<p>There’s an ecosystem of tooling that can use the Vale rulesets including the flexible <a href="https://vale.sh/docs/cli">command line interface</a> and a <a href="https://chromewebstore.google.com/detail/vale/kfmjcegeklidlnjoechfggipjjjahedj?hl=en&amp;authuser=0">Chrome browser extension</a>. It would be interesting to enable the use of the rules in other form factors. For example, it would be helpful if the rules could be run server-side on websites to avoid the need to install Vale on your local machine.</p>
<p>Another possibility would be to support alternative versions of the rulesets for the other available prose linters.</p>
<p>The rules will need to adapt over time to reflect changing AI dialect and GPTisms – it’s unclear whether these rules will be relevant or productive in a year.</p>
<p>Others have attempted to compile lists of “<a href="https://github.com/rand/cc-polymath/tree/main/skills/anti-slop">slop words</a>” to guide AI tools away from cliché. I could consider merging these with my current ruleset but need to consider the selection criteria for including each word.</p>
<h2>Self-sur<strong>vale</strong>ance</h2>
<p>I ran my new ruleset against this article (the one you’re reading now) and… nothing.</p>
<p><code>✔ 0 errors, 0 warnings and 0 suggestions in 1 file.</code></p>
<p>It’s oddly satisfying that nothing was flagged – although it could be that I naturally edited out anything that whiffed of AI along the way.</p>
<h2>Licensed to lint</h2>
<p>As it stands, the ruleset is mostly generated from the “Signs of AI Writing” page and it’s therefore released under the same <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC by SA</a> license. This means you can create further derivative works as long as you credit the source and keep the same license.</p>
<p>You can find the ruleset over <a href="https://github.com/ammil-industries/vale-signs-of-ai-writing">on GitHub</a> with instructions for getting started. Comments, feedback and pull requests are welcome.</p>
<hr class="footnotes-sep" />
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>See the <a href="https://www.404media.co/wikipedia-editors-adopt-speedy-deletion-policy-for-ai-slop-articles/">404 Media coverage</a> of the new “Speedy Deletion” policy to avoid red tape when content is substandard due to the use of AI. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Yes, I see your raised eyebrow. I’m using AI to build a tool to understand the use of AI, the irony hasn’t escaped me. Is there a risk that the use of Claude will bias the whole project making it useless? It’s something to consider but I think this reflects the reality of the widespread use of these tools: with the time I have available would I choose to do this work unassisted? At this point my answer is no. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>I’m editing this in iA Writer which has built-in “<a href="https://ia.net/writer/support/editor/style-check?tab=mac">style check</a>” functionality that flags clichés and fillers. I don’t always accept the suggestions it makes but it’s helpful to understand what it flags. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The port I couldn’t ship]]></title>
            <link>https://ammil.industries/the-port-i-couldnt-ship</link>
            <guid isPermaLink="false">https://ammil.industries/the-port-i-couldnt-ship</guid>
            <pubDate>Thu, 27 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>In October I read Simon Willison’s account of bringing a 2001 Perl (and C) library to the web using Claude Code. <a href="https://sourcetarget.email/editions/17/">Back in 2022</a> I wrote about a fantastic little Perl library called <a href="https://metacpan.org/pod/Graph::Easy">Graph::Easy</a> that renders flowcharts as ASCII art.</p>
<p>Inspired by Willison, I set about bringing Graph::Easy to the web.<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
<h2>Why Graph::Easy?</h2>
<p>Here’s an example ASCII diagram generated with Graph::Easy.</p>
<pre><code class="language-plaintext">
                                                             +----------------------------------------------------------------------------------------+
                                                             |                                                                                        |
                                                             |                                                                                        |
                                    +------------------------+-------------------------------+                                                        |
                                    |                        |                               v                                                        v
+ - - - - - - - - - - - - - - - - - - - - - - - - -+     +- - - - - - - - - - - - - - - - - - - - - - - - - +     + - - - - - - - - - - - - - - - - - - - - - - - - -+
'                     Frontend                     '     '                     Backend                      '     '                     Storage                      '
'                  192.168.1.0/24                  '     '                  192.168.2.0/24                  '     '                  192.168.3.0/24                  '
'                                                  '     '                                                  '     '                                                  '
' +--------------+                +--------------+ '     ' +--------------+                +--------------+ '     ' +--------------+                +--------------+ '
' |    nginx     |                |     app      | '     ' |     api      |                |    worker    | '     ' |   postgres   |                |    redis     | '
' | 192.168.1.10 | -------------&gt; | 192.168.1.11 | ' --&gt; ' | 192.168.2.10 | &lt;------------&gt; | 192.168.2.11 | ' --&gt; ' | 192.168.3.10 | &lt;------------&gt; | 192.168.3.20 | '
' +--------------+                +--------------+ '     ' +--------------+                +--------------+ '     ' +--------------+                +--------------+ '
'                                                  '     '                                                  '     '                                                  '
+ - - - - - - - - - - - - - - - - - - - - - - - - -+     +- - - - - - - - - - - - - - - - - - - - - - - - - +     + - - - - - - - - - - - - - - - - - - - - - - - - -+
                                                             |                               |                        ^                               ^
                                                             +-------------------------------+------------------------+                               |
                                                                                             |                                                        |
                                                                                             |                                                        |
                                                                                             +--------------------------------------------------------+

</code></pre>
<p>These diagrams are inherently portable, timeless, and to my eye more charming than any modern visualisation alternatives. Thirty years on, Graph::Easy remains unmatched at this specific problem. <sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup></p>
<h2>It was supposed to be so Graph::Easy</h2>
<p>Like Willison, I was unsurprised yet delighted to find that Claude had no issue using WebPerl to make Graph::Easy run locally in the browser. With a small amount of prodding and guidance I had a slick little webapp that showcased the library.</p>
<a href="https://graph-easy.online">
<p><img src="https://ammil.industries/_astro/graph-easy-online.coJ8Imzj_1EdQFD.webp" alt="Screenshot of Graph::Easy web interface showing the Seven Bridges of Königsberg problem rendered as ASCII art. The left panel contains Graph::Easy syntax defining the bridges and connections, while the right panel displays the resulting ASCII diagram with bridges represented as dotted-line boxes connected in a network layout. | Is it a real side project if you don't buy a new domain name?" /></p>
</a>
<p>At this point I should have put final touches to the web app, shipped it and written this blog post.</p>
<p>But I didn’t. I got greedy.</p>
<h2>Chasing my own tail</h2>
<p>One thing irked me. The WebPerl interpreter took a few seconds to initialise.</p>
<p>“You know what?” I thought. “I bet Claude could do a good job simply porting the library over to a different language.”</p>
<p>The early success of the WebPerl app convinced me the model could handle more than it could. I was lazy, curious, and assuming the <a href="https://www.oneusefulthing.org/p/centaurs-and-cyborgs-on-the-jagged">jagged frontier</a> would smooth out if I pushed hard enough.</p>
<p>And thus started a journey both fruitless and frustrating.</p>
<h3>Attempt 1 - one-shot and done?</h3>
<p>I didn’t, at first, understand the enormity of the task I had set. I asked Claude to port the Perl library to TypeScript in a new branch and let it rip.</p>
<p>LLMs are notoriously untrustworthy. They require scrutiny, oversight and credulity to spot cases where they gloss over inconvenient implementation details.</p>
<p>I’m human though – it’s hard to calibrate my response to their enthusiasm. Claude seemed to have the implementation in hand, who was I to question it?</p>
<p>Questioning came naturally to me, however, when the generated ASCII graphs from my newly vibed, black box implementation completely failed to match the original Perl versions.</p>
<p><em>Expected:</em></p>
<pre><code>+---------+     +-----------+
|  Bonn   | --&gt; |  Berlin   |
+---------+     +-----------+
  |
  |
  v
+---------+     +-----------+     +-----+
| Cottbus | --&gt; | Moselkern | --&gt; | Ulm |
+---------+     +-----------+     +-----+
</code></pre>
<p><em>Actual:</em></p>
<pre><code>+---+
+---------++----+-----------+-----+-----+
|         ||    |           | --&gt; |     |
| Cottbus || Bon| Moselkern |erlin| Ulm |
|         -----&gt;            |     |     |
|          --&gt;              |     +-----+
+---------++----+-----------+-------+
</code></pre>
<h3>Attempt 2 - TDD</h3>
<p>After my initial punt I knew I had to be smarter. Graph::Easy has over 100 reference tests that I needed to wire up to take an approach approximating “Test Driven Development”. Graph description in, ASCII output out, compare it to the reference example. Easy.</p>
<p>At this point most of these tests were failing, but a few basic ones gave me misplaced confidence that I could crank the LLM machine and get a Green test bench within a few hours. In hindsight this was idealistic.</p>
<p>LLMs don’t see ASCII art the same way we do. They see strings made up of letters, punctuation and newlines. The spatial relationships that make Graph::Easy’s output dense and clarifying are invisible to them.</p>
<p>I dabbled with allowing Claude to generate screenshots of the reference inputs and test outputs to let the multimodal capability do their work but this felt slow and comparing pixels seemed counterproductive when considering characters in a rectangle.</p>
<h3>Attempt 3 - Separation of Concerns</h3>
<p>I tried again from scratch, attempting the current approximation of prompt engineering best practices and actually using my brain to reduce the complexity:</p>
<ul>
<li>I reduced the scope and made sure we weren’t trying to replicate features we didn’t need (for example, SVG rendering and colour string parsing)</li>
<li>I split the work into parsing, layout, and rendering streams and was assured by Claude that these were independent (when will I learn not to trust the models?). I figured that the context of each agent would do a better job isolated from the concerns of others.</li>
<li>I interrogated each agent about pitfalls and refined the approach until I couldn’t spot holes</li>
</ul>
<p>Running multiple agents at once gave a fresh contact-high of apparent productivity. But asking a final agent to merge the work and test the output I was dismayed (but low-key unsurprised) to find the new run still failed on even the most basic of tests.</p>
<p>I took a long-overdue peek at the source codebase. Over 30,000 lines of battle-tested Perl across 28 modules. A* pathfinding for edge routing, hierarchical group rendering, port configurations for node connections, bidirectional edges, collapsing multi-edges. I hadn’t expected the sheer interwoven complexity.</p>
<h3>Attempt 4 - Shopping around</h3>
<p>At this point I was desperate and resented my teammate. Claude’s peppy enthusiasm was grating and the whole project was wearing me down. Over the course of the project it appeared to gain a new skill of being self-aware about its own token use. Recognising the enormity of the task ahead of it, it would seek reassurance after every loop of work.</p>
<pre><code class="language-plaintext">(╯°□°）╯︵ ǝpoɔ ǝpnɐlɔ
</code></pre>
<p>My guess is that this is an attempt to combat user frustration and perceived degraded capabilities of the models once the context window is saturated. It’s not unique to Claude.</p>
<p>The reward hacking was another problem. If I didn’t pay attention Claude did everything possible to avoid doing the work. I was fatigued from making demands in the <a href="http://CLAUDE.md">CLAUDE.md</a> that it appeared to be ignoring anyway.</p>
<p>Cursor 2.0 was released mid-spiral and gave me an easy way to simultaneously apply multiple models to the problem. I was drawn to the recently <a href="https://jmduke.com/posts/post/cheetah-ii/">unmasked</a>, zippy, Composer model – as if speed was the biggest blocker here.</p>
<p>I found that <code>GPT-Codex-High</code> appeared to read the Perl source more consistently and could explain why certain Perl idioms wouldn’t translate. This bought me another few days of false hope.</p>
<h3>Attempts 5, 6, ∞</h3>
<p>I don’t recall what happened next. I think I slipped into a malaise of models. 4-way split-paned worktrees, experiments with cloud agents, competing model runs and combative prompting. Drowning in stale markdown plans with no idea who or what had written them, documentation that was supposedly self-updating but never was.</p>
<p>Rituals of asking the models to ensure the documentation was up to date (despite the hooks that were supposed to do that for me) grew tiring and felt futile.</p>
<p>I surfaced for air and gazed back at the mess of incomplete ports.</p>
<h2>Graph::Easy, Hard::won</h2>
<p>I finally understood: Graph::Easy earned its complexity through decades of tweaking and development. Chewing up decades of careful work and spitting it out with a gaggle of coding agents is disrespectful to the craft.</p>
<p>I spent weeks casually trying to replicate what took years to build. My inability to assess the complexity of the source material was matched by the inability of the models to understand what it was generating.</p>
<p>A reader (or dare I say a wiser version of me), armed with a future model and dedicated to the task, will succeed with this port where I failed and that makes me uneasy.</p>
<hr />
<hr class="footnotes-sep" />
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>I should note that I’m not the first to bring Graph::Easy to the web. Georgi Gerganov <a href="https://dot-to-ascii.ggerganov.com/">hosts a version of it</a>, using time-honored PHP to invoke Graph::Easy on the backend server. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Other options include:</p>
<ul>
<li>D2 does a good job with a different architecture and different tradeoffs: replicated <a href="https://d2lang.com/blog/ascii/">SVGs as ASCII</a>.</li>
<li>When I started this project I wasn’t aware of <a href="https://diagon.arthursonzogni.com/">Diagon</a> from Arthur Sonzogni.</li>
<li>The esteemed <a href="https://graphviz.org">graphviz</a> library added <a href="https://graphviz.org/docs/outputs/ascii/">ASCII output support</a> this year but it’s effectively an image renderer rather than the bare networks generated by Graph::Easy.</li>
</ul>
<p>One interesting quirk of this project is the reality that “State of the Art” models get a passing grade for generating ASCII flow charts. Ask Claude to make you a flow chart or diagram and it will happily spit out something respectable. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[I know you didn’t write this]]></title>
            <link>https://ammil.industries/i-know-you-didnt-write-this</link>
            <guid isPermaLink="false">https://ammil.industries/i-know-you-didnt-write-this</guid>
            <pubDate>Thu, 06 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>I received a link from a co-worker with the accompanying note:</p>
<blockquote>
<p>I put together a plan for the project, take a look.</p>
</blockquote>
<p>Taking a quick scan through the linked document I’m pleased to see that there’s some substance to it. And look, there are tables and step-by-step instructions. At the bottom there are risks and potential mitigations. They have <em>definitely</em> put together a plan and it’s <em>definitely</em> in this document.</p>
<p>Later, I poured another cup of coffee and actually read the document and something twigged a part of my brain. Suspicions aroused, I clicked on the “Document History” button in the top right and saw a clean history of empty document – and then <strong>wham</strong> – fully-formed plan, as if it had just spilled out of someone’s brain, straight onto the screen, ready to share.</p>
<p>So it’s definitely AI. I felt betrayed and a little foolish. But why? If this LLM has slurped up the entirety of human written output, shouldn’t this plan be better than what one person could ever dream up? Perhaps that’s exactly the thought process they had when they turned to their LLM of choice.</p>
<p>I recall looking back at the note to double, triple check that they didn’t call out the use of AI. If this was their best attempt then to save face I’m going to have to write the plan myself.</p>
<p>Regardless of their intent I realised something subtle had happened. Any time saved by (their) AI prompting gets consumed by verification overhead, the work just gets passed along to someone else – in this case me.</p>
<h2>Have you been the victim of AI workslop?</h2>
<p>A recent, well-covered article in <a href="https://hbr.org/2025/09/ai-generated-workslop-is-destroying-productivity">Harvard Business Review</a> explores this new category of newly-coined “workslop” – the process of relying on AI for the creation of working materials. The study provides extensive examples of cases where people have reached for AI with the direct outcome of greatly increasing the amount of collective work that’s required.</p>
<p>That increased work is verification – figuring out whether someone actually thought about what they sent you - and it rhymes with a completely different domain.</p>
<p>A core principle of the cryptographic systems that keep our information private online are mathematical constructs that are <em>easy</em> to verify but <em>hard</em> to compute.</p>
<p>With AI writing, we’ve inverted this: generation is trivial, verification is expensive. We still read, but we read differently: guards up, trust withheld, looking for tells. The document history button becomes mandatory due diligence.</p>
<h2>It’s just not nice</h2>
<p>Using AI when writing for others is fundamentally about etiquette. It’s not polite to share purely AI-generated writing without disclosing the provenance of it. In most cases we’re looking for an equitable exchange of ideas. If you know in your heart of hearts that you didn’t put the work in, you’re undermining the social contract between you and your reader.</p>
<p>By passing off AI as your own work it’s inevitable that you become passive, an observer of the act of creating, an assistant to the creator.</p>
<p>If you can’t explain what you’ve written, do you have any right to share it? There’s a reason most PhD candidates defend their work orally.</p>
<p>Why should I bother to read something you didn’t bother to write?</p>
<h2>Accountability-shirking as a Service</h2>
<p>In serious engineering circles we’re reaching consensus that developers are <a href="https://simonwillison.net/2025/Feb/3/a-computer-can-never-be-held-accountable/">held accountable</a> for all code committed and shared, regardless of how it was produced.</p>
<p>Other work is in different territory. Side projects, throwaway code, single-use applications – building something you lack the skills to create otherwise. But if you ship it and people use it, you’ve created an implicit promise: that you can maintain, debug, and extend what you’ve built. If AI assembled it and you can’t answer basic questions about how it works, you’ve misled users about what they can depend on. The work document and the shipped app both create dependencies – one on your strategic thinking, one on your technical follow-through.</p>
<p>Engineers who have embraced coding assistants to do the messy bit of actually putting code to editor see concrete, if modest, productivity boosts.</p>
<p>The same is happening for writers. Unless pressured by unrealistic expectations or deadlines (or in some cases, pleading ignorance to the risks) professional writers will converge on the same view as software engineers. Anything worth writing has to be written.<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
<p>Writers and other professionals want to do good work and be recognised for their good work. This leads us to explore where AI aids that work and understand where it impedes it. It doesn’t help that we’re working this all out as we go along.</p>
<h1>Transcribe, Translate, Transfer</h1>
<p>Despite the name, conversion work – not generation – is where generative AI justifies itself. In journalism, Jason Koebler @ 404 Media <a href="https://www.404media.co/the-medias-pivot-to-ai-is-not-real-and-not-going-to-work/">notes</a>:</p>
<blockquote>
<p>YouTube’s transcript feature is an incredible reporting tool that has allowed me to do stories that would have never been possible even a few years ago. YouTube’s built-in translations and subtitles, and its transcript tool are some of the only reasons that I was able to do <a href="https://www.404media.co/where-facebooks-ai-slop-comes-from">this investigation into Indian AI slop creators</a>, which allowed me to get the gist of what was happening in a given video before we handed them to human translators to get exact translations.</p>
</blockquote>
<p>When the team did the admirable thing to translate important reporting on ICE in Spanish they turned to human translators to get that extra certainty. Some people would be happy with the LLM translation. That’s their line. For responsible, authentic journalism 404 Media took the higher road.</p>
<p>In “<a href="https://mailchi.mp/aboard/zkd26k8jzm-10340642?e=50577b3eda">Good Bot, Bad Bot</a>”, Paul Ford compliments the proposal to use AI to help academics package and market their work to a non-technical author.</p>
<p>He notes</p>
<blockquote>
<p><strong>It makes economic sense.</strong> Researchers who aren’t affiliated with giant companies or large research labs at universities often have few resources to promote their research. And for the most part, biology postdocs cannot write good posts—not least in their native language, but especially in multiple languages. AI won’t be as good at posting as a thoughtful human, but it will likely be better at fun, emoji-laden social media posts than, say, an actuarial scientist adjunct who speaks English as their fourth language.</p>
</blockquote>
<p>It’s refreshing that Ford acknowledges the pragmatic realities. Promotional posts aren’t the research itself – marketing your paper isn’t the same as writing it. That’s Ford’s line. The economic reality of underfunded academics means embracing AI in ways that might actually be welcome.</p>
<h1>The Guessing Game</h1>
<p>Undisclosed AI is becoming the default assumption. Reading anything is now an act of faith that someone thought about the results longer than it took to fire off a prompt.</p>
<p>Faced with uncovering the fingerprint of the author, will we get tired of the guessing game?</p>
<p>Verification today often leads to difficult conversations about the <em>nature</em> of work and effort, authenticity and etiquette. Those conversations are the work now.</p>
<p class="acknowledgment">Thanks to <a href="https://thisisimportant.net/">Sarah Moir</a>, <a href="https://www.linkedin.com/in/harrison-neuert/">Harrison Neuert</a> &amp; <a href="https://storbeck.dev/">Geoff Storbeck</a> for their invaluable feedback.</p>
<hr class="footnotes-sep" />
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>A fun corollary for this is the increase in <a href="https://www.bloomberg.com/news/newsletters/2024-05-17/ai-fake-bylines-on-news-site-raise-questions-of-credibility-for-journalists">fake bylines</a> for news content – the person who wrote this doesn’t exist so there’s no “one” to blame if it’s wrong. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Quoting Thomas Ha]]></title>
            <link>https://bsky.app/profile/thomasha.bsky.social/post/3mqa66fg6i22y</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/thomas-ha</guid>
            <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>not saying anything new, but if these folks actually believed in genAI writing, they’d disclose it, tout it, and build their own audiences elsewhere and leave others be. hiding and sneaking it to markets who want no part of it doesn’t prove you’re good at writing. just proves you’re good at fraud.</p>
<p>― <a href="https://bsky.app/profile/thomasha.bsky.social/post/3mqa66fg6i22y" target="_blank" rel="noopener noreferrer">Bluesky post</a></p>]]></content:encoded>
            <author>Thomas Ha</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[Quoting John Scalzi]]></title>
            <link>https://whatever.scalzi.com/2026/03/03/indefinite-book-club-hiatus/</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/scalzi-book-club-hiatus</guid>
            <pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>To be clear, it’s not just your book club that’s being ruined by this crap. It’s also become exponentially more difficult to suss out legitimate convention/book festival invitations and paid speaking gigs from a sea of “AI”-generated asks that ultimately try to scam money from me and other authors (and from any other person who might even attend a convention or conference; writers aren’t special to scammers).</p>
<p>― <a href="https://whatever.scalzi.com/2026/03/03/indefinite-book-club-hiatus/" target="_blank" rel="noopener noreferrer">Indefinite Book Club Hiatus</a></p>]]></content:encoded>
            <author>John Scalzi</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[Quoting Books By People]]></title>
            <link>https://booksbypeople.org/</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/books-by-people</guid>
            <pubDate>Sat, 14 Feb 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>‘Organic Literature’ means books conceived and written by humans, where structure, voice, and character development originate from the author.</p>
<p>― <a href="https://booksbypeople.org/" target="_blank" rel="noopener noreferrer">How do you define Organic Literature vs AI-written?</a></p>]]></content:encoded>
            <author>Books By People</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[Quoting Dr Kanta Dihal & Tania Duarte]]></title>
            <link>https://blog.betterimagesofai.org/better-images-of-ai-guide/</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/better-images-of-ai</guid>
            <pubDate>Sun, 11 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Pictures that show humanoid robots in deep contemplation, or tackling difficult maths problems on a blackboard, reinforce unrealistic fears and expectations about AI achieving human-like intelligence, or even ‘superintelligence’, imminently.</p>
<p>― <a href="https://blog.betterimagesofai.org/better-images-of-ai-guide/" target="_blank" rel="noopener noreferrer">A Guide for Users and Creators</a></p>]]></content:encoded>
            <author>Dr Kanta Dihal &amp; Tania Duarte</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[Quoting Ståle Grut]]></title>
            <link>https://www.niemanlab.org/2025/12/a-visual-verification-tax-comes-due/</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/stale-grut</guid>
            <pubDate>Sun, 11 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>In 2026, the verification tax is coming due: You either invest in visual verification capabilities now or pay the price in credibility later.</p>
<p>― <a href="https://www.niemanlab.org/2025/12/a-visual-verification-tax-comes-due/" target="_blank" rel="noopener noreferrer">A visual verification tax comes due</a></p>]]></content:encoded>
            <author>Ståle Grut</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[Quoting Kevin Baker]]></title>
            <link>https://substack.com/@kevinbaker/note/c-157586187</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/kevin-baker</guid>
            <pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>One of the most interesting things about LLMs as a technology is that you don’t have to use it to be powerfully deranged by it. You can get snowcrashed by using it. You can get snowcrashed by hating it.</p>
<p>― <a href="https://substack.com/@kevinbaker/note/c-157586187" target="_blank" rel="noopener noreferrer">Substack Note</a></p>]]></content:encoded>
            <author>Kevin Baker</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[Quoting Luke Trayser]]></title>
            <link>https://dadhas.substack.com/p/ai-is-never-gonna-catch-me</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/luke-trayser</guid>
            <pubDate>Mon, 15 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>i don’t think ai fully understands the lengths i’ll go to in order to make sure my writing sounds different than all the other stuff out there.</p>
<p>― <a href="https://dadhas.substack.com/p/ai-is-never-gonna-catch-me" target="_blank" rel="noopener noreferrer">AI is never gonna catch me</a></p>]]></content:encoded>
            <author>Luke Trayser</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[Quoting Max Read]]></title>
            <link>https://maxread.substack.com/p/will-ai-writing-ever-be-good</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/max-read</guid>
            <pubDate>Fri, 05 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Even as L.L.M.s get better at producing fluid and plausibly human text, these persistent stylistic tics remain interestingly abrasive–in a single short answer, presented to you in a vacuum, A.I. text is as smooth as can be, but when you’re confronted with an overwhelming amount of it, the strangeness that’s been fine-tuned out really begins to re-assert itself.</p>
<p>― <a href="https://maxread.substack.com/p/will-ai-writing-ever-be-good" target="_blank" rel="noopener noreferrer">Will A.I. Writing Ever Be Good?</a></p>]]></content:encoded>
            <author>Max Read</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[Quoting Celine Nguyen]]></title>
            <link>https://jasmi.news/p/celine-nguyen</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/celine-nguyen</guid>
            <pubDate>Sun, 30 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>I also had a conversation with a writer friend Anna Gát, and she was saying that she feels like she writes in a more punk way because she wants to prove that her work is human. And what that means is she’s looser with the rules of grammar. She is more experimental with her prose.</p>
<p>― <a href="https://jasmi.news/p/celine-nguyen" target="_blank" rel="noopener noreferrer">Jasmine Sun Podcast</a></p>]]></content:encoded>
            <author>Celine Nguyen</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[Quoting Rich Ziade]]></title>
            <link>https://aboard.com/podcast/bots-ate-my-resume/</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/rich-ziade</guid>
            <pubDate>Mon, 17 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Here’s the thing, we can’t distinguish effort. How do I know you put a little bit of effort in?</p>
<p>― <a href="https://aboard.com/podcast/bots-ate-my-resume/" target="_blank" rel="noopener noreferrer">Bots Ate My Resume</a></p>]]></content:encoded>
            <author>Rich Ziade</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[Quoting Fabrizio Ferri Benedetti]]></title>
            <link>https://passo.uno/ai-wikis-docs-teather-as-a-service/</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/fabrizio-ferri-benedetti</guid>
            <pubDate>Sat, 15 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Let’s draw the line: docs generated entirely by AI should never ship to users. You can <a href="https://passo.uno/ai-docs-policy-contributions/">use AI judiciously</a> to audit your docs for gaps, to spot inconsistencies, to generate first drafts that you’ll edit later.</p>
<p>But the moment you let any LLM have the final word on what users will read, you’ve abandoned the basic contract of docs: that someone who <em>understands</em> the system has taken responsibility for explaining it truthfully.</p>
<p>― <a href="https://passo.uno/ai-wikis-docs-teather-as-a-service/" target="_blank" rel="noopener noreferrer">Code wikis are documentation theater as a service</a></p>]]></content:encoded>
            <author>Fabrizio Ferri Benedetti</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[Quoting Justin, from librarypunk]]></title>
            <link>https://www.404media.co/ai-is-supercharging-the-war-on-libraries-education-and-human-knowledge/</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/justin-librarypunk</guid>
            <pubDate>Thu, 06 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>AI has given people <em>“absolute impunity to ignore reality […] AI is a direct attack on the way we verify information: AI both creates fake sources and obscures its actual sources.”</em></p>
<p>― <a href="https://www.404media.co/ai-is-supercharging-the-war-on-libraries-education-and-human-knowledge/" target="_blank" rel="noopener noreferrer">AI Is Supercharging the War on Libraries, Education, and Human Knowledge</a></p>]]></content:encoded>
            <author>Justin, from librarypunk</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[Quoting Vicki Boykis]]></title>
            <link>https://vickiboykis.com/2025/10/20/i-want-to-see-the-claw/</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/vicki-boykis</guid>
            <pubDate>Mon, 20 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>The best code is no code, programming still sucks and always will, and yet, I find myself still searching for the claw, the mark of mastery. Because that mark comes from people who want to reach other people directly. I want to see the claw, because if there is a claw, it means there is a living, breathing lion on the other side of the screen building the software that elevates us and binds us together as a community of software engineers.</p>
<p>― <a href="https://vickiboykis.com/2025/10/20/i-want-to-see-the-claw/" target="_blank" rel="noopener noreferrer">I want to see the claw</a></p>]]></content:encoded>
            <author>Vicki Boykis</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[Quoting Paul Ford]]></title>
            <link>https://mailchi.mp/aboard/zkd26k8jzm-10340642?e=50577b3eda</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/paul-ford</guid>
            <pubDate>Wed, 15 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>The only thing I wish is that they had a default tag or notice that was always produced—<em>“Summarized by AutoPR”</em> or just <em>“#AutoPR”</em> would be enough. People should know when their content is made by bots.</p>
<p>― <a href="https://mailchi.mp/aboard/zkd26k8jzm-10340642?e=50577b3eda" target="_blank" rel="noopener noreferrer">Good Bot, Bad Bot</a></p>]]></content:encoded>
            <author>Paul Ford</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[Quoting Allison Parrish]]></title>
            <link>https://posts.decontextualize.com/language-models-poetry/</link>
            <guid isPermaLink="false">https://ammil.industries/snippets/allison-parrish</guid>
            <pubDate>Fri, 13 Aug 2021 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>I’m going to take this assertion one step further and make a stronger claim: in fact, the only thing computers can write is poetry. I think this is true for all methods of algorithmic writing, but it’s especially true of text that is generated with language models.</p>
<p>― <a href="https://posts.decontextualize.com/language-models-poetry/" target="_blank" rel="noopener noreferrer">Language models can only write poetry</a></p>]]></content:encoded>
            <author>Allison Parrish</author>
            <enclosure length="0" type="image/svg+xml" url="https://ammil.industries/favicon.svg"/>
        </item>
        <item>
            <title><![CDATA[No one needs it.]]></title>
            <link>https://ammil.industries/log/no-one-needs-it</link>
            <guid isPermaLink="false">https://ammil.industries/log/no-one-needs-it</guid>
            <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[How to know you’re in a pickle.]]></description>
            <content:encoded><![CDATA[<p>Paul Ford, on the <a href="https://aboard.com/podcast/ai-unicorns-dont-exist/">Aboard podcast</a>, describing a spiral I recognise more than I’d like to:</p>
<blockquote>
<p>Let me describe what happened. So I’ve built a couple relatively good small products around things like CRM, some enhanced tech search, signed kind of stuff, and so on. And I’ve turned to you and I’ve said, we need to get to a place where I can bring you in as product manager to get this out of my hands. But I keep screwing around in the meantime because I’m trying to learn. So here’s what happens. I realize something is missing. And then I’m like, I tell, I prompted into being a new feature, a new add-on, a new way to look, a visualization. And then that visualization, which is not the main core of what I’m trying to do—it’s a distraction. It’s just not quite where I need it to be. I don’t need it at all. No one needs it. I’m the only person using the software right now. But now you know what has become the only and most important thing in my entire life?</p>
</blockquote>
<blockquote>
<p>“What?”</p>
</blockquote>
<blockquote>
<p>Finishing that visualization. And then while I’m working on that visualization, I realized that I could abstract it into a library so I could reuse it. And then, you know, what becomes the most important thing in my life? Abstracting the library. Building a library. And then each component of the library. And so because this enables it, the minute somebody starts saying you can parallelize this with lots of agents, you know you’re in a pickle. Because that means more software, whereas absolutely no one outside of our world is actually sitting there saying, I need more software.</p>
</blockquote>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[An app can be a meal kit]]></title>
            <link>https://ammil.industries/log/an-app-can-be-a-meal-kit</link>
            <guid isPermaLink="false">https://ammil.industries/log/an-app-can-be-a-meal-kit</guid>
            <pubDate>Fri, 16 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Nutrition through hyperstition.]]></description>
            <content:encoded><![CDATA[<p>In “<a href="https://ammil.industries/does-smitten-kitchen-have-a-chocolate-zucchini-bread-recipe/">Does smitten kitchen have a chocolate zucchini bread recipe?</a>”, I wrote about creativity-on-rails: creating something because AI implies that you should have made it already.</p>
<p>My take was bleak and I realise now I automatically used another contentious use of language to describe model behaviour: hallucinations.</p>
<p>In <a href="https://interconnected.org/home/2024/05/03/dreaming">From the other side of the bridge</a>, Matt Webb defends the hallucination and points to countless examples of dreams that inspired individuals to discover novel ideas to generate considerable impact. He, like others, welcomes the spontaneous generation of ideas, even if they’re not rooted in reality.</p>
<p>He shares a word for this: a <strong>hyperstition</strong>, a</p>
<blockquote>
<p>self-fulfilling idea that becomes real through its own existence.</p>
</blockquote>
<p>When I see someone sharing a small project or prototype online now it invariably has the hallmark of AI-assisted development. I only have to look at the various tools and sites I’ve developed with Claude in the past year to understand why: for those with an idea and a Claude Code subscription<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> this is the golden age of side projects.</p>
<p>If, with some handwaving to the gods of continued progress, code is now free, any idea for an app or tool can exist simply by being imagined.</p>
<p>In his <a href="https://www.robinsloan.com/lab/five-years-of-home-cooked-apps/">2025 retrospective</a> on the influential “<a href="https://www.robinsloan.com/notes/home-cooked-app/">An app can be a home cooked meal</a>,” Robin Sloan invites the reader to rustle up their own further abuse of the analogy.</p>
<p>We’ve entered an era of app development as meal kit. It’s apt: a subscription service to reduce the friction of cooking a nutritious, satisfying meal. Critics point to packaging waste and atrophied skills, but the demand is real.</p>
<p>In this <a href="https://www.robinsloan.com/lab/manic-technology/">mania of creation</a>, what happens to the original creators? The ones who inspired with the promise of an actual home-cooked meal (or just dessert)?</p>
<p>We’re wired to create. The path from problem to solution is lush and evergreen. The idea becomes the tool. By embracing the code-is-free lifestyle AI adopters chant as one: we build because we can.</p>
<hr class="footnotes-sep" />
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p><code>s/Claude Code/your favourite coding assistant/g</code> <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[the Great Cleavening]]></title>
            <link>https://ammil.industries/log/the-great-cleavening</link>
            <guid isPermaLink="false">https://ammil.industries/log/the-great-cleavening</guid>
            <pubDate>Sun, 11 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Reconciling an unethical technology as a secret third thing.]]></description>
            <content:encoded><![CDATA[<p>I’m constantly reassessing whether the decision to think about, write and work with new generative AI tooling is justified. I struggle to reconcile the new capabilities with the undoubtedly bad background and grim impact of releasing the capability to the world.</p>
<p>Above all my stance is that there’s no going back. While it’s sometimes appealing to pretend we can hope it goes away, it’s not going to go away. Less gently:</p>
<blockquote>
<p><a href="https://nymag.com/intelligencer/article/san-francisco-ai-boom-artificial-intelligence-tech-industry-kids.html">No one will ask your permission to build a world you do not understand.</a></p>
</blockquote>
<p>Appearing at just the right time to bolster this threadbare justification is an extended quote from Patrick Tanguay’s <a href="https://sentiers.media/agi-is-here-and-i-feel-fine-a-call-for-new-stories-no-385/">Sentiers</a>. It’s a response to the first of Robin Sloan’s <a href="https://www.robinsloan.com/winter-garden/agi-is-here/">pop up newsletter</a> on the topic of AI:</p>
<blockquote>
<p>To those who think the piece might be too positive about LLMs, I’ll remind you that one can be critical of all the pitfalls and misunderstandings, and be aware of the semantic traps, and still have their brain explode when working with LLMs. All these things are true.
The biased training and permissionless taking of people’s work, the purposeful use of words to make it sound like it’s human/actually thinking, the extractive business models, the imperial attitude, the broligarchy, the misleading chat-focused interfaces, etc.
But also the breadth of what they can do, the uncannyness of it, the power, the potential, the questions. It’s in part why I find the field so fascinating, but also, I think, why it’s so cleaving.</p>
</blockquote>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[graph-easy-ts]]></title>
            <link>https://ammil.industries/log/graph-easy-ts</link>
            <guid isPermaLink="false">https://ammil.industries/log/graph-easy-ts</guid>
            <pubDate>Fri, 09 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[With a little help from Azad.]]></description>
            <content:encoded><![CDATA[<p>He’s only gone and done it.</p>
<p>As predicted, I LLM-nerd-sniped at least one person enough to make them dedicate some time and effort to porting <a href="https://tomisin.space/projects/graph-easy-ts/">Graph Easy to TypeScript</a>.</p>
<p>Reading through the write-up, it struck me that Tom didn’t appear to have done anything drastically different to me. The biggest obvious change was using an AI coding agent for VS Code called “<a href="https://www.azad.bot/">Azad</a>”. It appears this went a long way to keeping the agent “on track” and avoided many of the premature terminations I discussed in the <a href="https://ammil.industries/the-port-i-couldnt-ship/">original blog post</a>.</p>
<p>I also note he picked up the freshly-released GPT-5.2 which I’m taking as an extremely loose benchmark of improved frontier model capability.</p>
<blockquote>
<p>After just under 24 hours, ~250 million tokens, and $148.58, all the tests passed! The rendered graphs match identically.</p>
</blockquote>
<p>The nice thing about this is I get to update <a href="https://graph-easy.online/">graph-easy.online</a> to use <a href="https://github.com/fairfieldt/graph-easy-ts">graph-easy-ts</a> for super-fast conversions of text to ASCII. I also took the opportunity to add a serverless REST endpoint for headless conversion.</p>
<pre><code>curl -X POST https://api.graph-easy.online/v1/convert \
  -H "Content-Type: application/json" \
  -d '{"input": "[A] -&gt; [B] -&gt; [C]", "format": "ascii"}'

{"success":true,"output":"+---+     +---+     +---+\n| A | --&gt; | B | --&gt; | C |\n+---+     +---+     +---+\n","format":"ascii","timing_ms”:0.5}
</code></pre>
<p>Thanks to Tom for picking this up and closing the loop.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[First, you absolutely do not have to hand it to Grokipedia.]]></title>
            <link>https://ammil.industries/log/first-you-absolutely-do-not-have-to-hand-it-to-grokipedia</link>
            <guid isPermaLink="false">https://ammil.industries/log/first-you-absolutely-do-not-have-to-hand-it-to-grokipedia</guid>
            <pubDate>Wed, 17 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Grok checks facts.]]></description>
            <content:encoded><![CDATA[<p>In “<a href="https://mikecaulfield.substack.com/p/its-time-to-take-the-fact-checking">We’re not taking the fact-checking powers of AI seriously enough. It’s past time to start.</a>”, digital literacy expert Mike Caulfield researches how Grokipedia appears to have correctly fact-checked a claim that professional fact-checkers missed.</p>
<p>In the article, Caulfield demonstrates his 3000+ word “<a href="https://checkplease.neocities.org/">Deep Background</a>” instruction prompt, a calibrated directive to guide an LLM through a detailed fact-checking exercise. He uses this prompt for a successful micro-investigation into a claim relating to the Nobel Prize ceremony and makes the case for an augmented approach to fact-checking.</p>
<blockquote>
<p>But I remain convinced that there is no future of verification and contextualization that doesn’t involve both better understanding of LLMs and more efficacious use of them.</p>
</blockquote>
<p>Caulfield also challenges “hallucination” as a flawed catch-all for the ways in which LLMs are inaccurate. Modern LLMs are more likely to be <em>conflating</em> through extrapolation or <em>overweighting</em> unreliable sources rather than purely fabricating.</p>
<p>His hotly contested stance is that disengagement is a mistake. One must engage with the technology in order to understand it.</p>
<blockquote>
<p>My set of understandings led me to discover a substantial error by a news organization that, if search hasn’t failed me, seems to have been missed by everyone up until now.
⁠⁠What has “I can’t analyze the output because its [sic] meaningless fancy autocomplete” done for you?</p>
</blockquote>
<p>I applaud Caulfield for raising awareness of the successful AI-assisted fact-check by Grokipedia despite feeling negatively about the site itself.</p>
<p>I was initially buoyed by Caulfield’s argument, but on reflection I think he still gives Grokipedia too much credit. I think we’ll need more than a single example of a fact-check slip made by humans and corrected by AI to make a case that this is revolutionary technology for fact-checkers.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[parsing JustHTML’s success]]></title>
            <link>https://ammil.industries/log/parsing-justhtmls-success</link>
            <guid isPermaLink="false">https://ammil.industries/log/parsing-justhtmls-success</guid>
            <pubDate>Sun, 14 Dec 2025 12:00:00 GMT</pubDate>
            <description><![CDATA[Envious notes on a successful port.]]></description>
            <content:encoded><![CDATA[<p>After trying, failing and <a href="https://ammil.industries/the-port-i-couldnt-ship/">sharing</a> my doomed efforts to port a Perl library over to TypeScript using AI tools, I eye enviously Emil Stenström’s <a href="https://friendlybit.com/python/writing-justhtml-with-coding-agents/">account</a> (<a href="https://simonwillison.net/2025/Dec/14/justhtml/">via</a>) of writing a HTML5 parser with a 17 point summary of the journey that concluded with a working implementation.</p>
<p>Some thoughts on where he succeeded where I didn’t:</p>
<ul>
<li>The models likely understand HTML5 more than bespoke, arcane routing algorithms tuned for ASCII diagrams.</li>
<li>Stenström found a reliable way to keep the agents running in a loop, something I struggled with.</li>
<li>He cites Gemini 3 Pro as pivotal for speed improvements, arriving at about the right time to give him a boost. This is similar to where I leaned into <code>GPT-Codex-High</code>.</li>
<li>Building custom tools for fuzzing, profiling and scraping contributed to Stenström’s success. His 8,500+ passing tests are an order of magnitude higher than the piddly ~100 load-bearing tests that I assumed would suffice.</li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[the Bach faucet]]></title>
            <link>https://ammil.industries/log/the-bach-faucet</link>
            <guid isPermaLink="false">https://ammil.industries/log/the-bach-faucet</guid>
            <pubDate>Sun, 14 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Coping with the reality of generating infinite songs.]]></description>
            <content:encoded><![CDATA[<p>As per <a href="https://web.archive.org/web/20221124001133/https:/twitter.com/GalaxyKate/status/1583907942834716672/?rw_tt_thread=True">Dr Kate Compton:</a></p>
<blockquote>
<p>A Bach Faucet is a situation where a generative system makes an endless supply of some content at or above the quality of some culturally-valued original, but the endless supply of it makes it no longer rare, and thus less valuable</p>
</blockquote>
<p>She links a <a href="https://www.theguardian.com/technology/2010/jul/11/david-cope-computer-composer">15 year old article</a> in the Guardian that recounts how Composer and Computer Scientist David Cope built “a little analytical engine” to generate thousands of original Bach chorales. With time, Cope built a successive tool (which he named Emily) to understand and ultimately emulate “the works of 36 composers.”</p>
<blockquote>
<p>Cope will ask Emily a musical question, feeding in a phrase. Emily will respond with her own understanding of what happens next. Cope either accepts or declines the formula, much in the way he would if he was composing “conventionally”.</p>
</blockquote>
<p>I can’t find any clear evidence of it after a short search but these releases were apparently met with dismay from the industry:</p>
<blockquote>
<p>Critics convinced themselves that they heard no authentic humanity in it, no depth of feeling, Cope was characterised as a composer without a heart; his recent memoir is called <em>Tin Man</em>.</p>
</blockquote>
<p>As noted in an Offscreen <a href="https://offscreen.com/view/an-essayistic-contemplation-on-humanity-and-artificial-creativity-in-opus-cope-an-algorithmic-opera-2021">review</a> of a 2021 documentary about Cope, he “takes pleasure but also tremendous inspiration and motivation in the public’s criticisms.”</p>
<blockquote>
<p>“I want the negative reaction,” Cope professes, “I feed off of it. I keep going because of it. It’s mine and mine alone, and I love it.”</p>
<p>Cope mischievously and semi-ironically calls it “blasphemous music.”</p>
</blockquote>
<p>And in an <a href="https://psmag.com/social-justice/triumph-of-the-cyborg-composer-8507/">interview</a> with Ryan Blitstein in the Pacific Standard, also from 2010, his emphatic position aligns with the pithy adage “good artists copy, great artists steal”:</p>
<blockquote>
<p>“Nobody’s original,” Cope says. “We are what we eat, and in music, we are what we hear. What we do is look through history and listen to music. Everybody copies from everybody. The skill is in how large a fragment you choose to copy and how elegantly you can put them together.”</p>
</blockquote>
<p>Cope felt pretty strongly about the tools he had created:</p>
<blockquote>
<p>He can’t imagine the possibility of going back to writing with just his own intuition and a pen and paper. “The programs are just extensions of me. And why would I want to spend six months or a year to get to a solution that I can find in a morning? I have spent nearly 60 years of my life composing, half of it in traditional ways and half of it using technology. To go back would be like trying to dig a hole with your fingers after the shovel has been made, or walking to Phoenix when you can use a car.”</p>
</blockquote>
<p>Another mention of a shovel caught my eye in the Pacific Standard piece:</p>
<blockquote>
<p>“All the computer is is just an extension of me,” Cope says. “They’re nothing but wonderfully organized shovels. I wouldn’t give credit to the shovel for digging the hole. Would you?”</p>
</blockquote>
<p>David Cope died at age 83 earlier this year.</p>
<blockquote>
<p>“People tell me they don’t hear soul in the music,” he says. “When they do that, I pull out a page of notes and ask them to show me where the soul is. We like to think that what we hear is soul, but I think audience members put themselves down a lot in that respect. The feelings that we get from listening to music are something we produce, it’s not there in the notes. It comes from emotional insight in each of us, the music is just the trigger.”</p>
</blockquote>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[why “ammil industries”?]]></title>
            <link>https://ammil.industries/log/why-ammil-industries</link>
            <guid isPermaLink="false">https://ammil.industries/log/why-ammil-industries</guid>
            <pubDate>Sat, 13 Dec 2025 12:00:00 GMT</pubDate>
            <description><![CDATA[A brief introduction to ammil and some of the thinking behind it.]]></description>
            <content:encoded><![CDATA[<p><em>Ammil</em> is “the sparkle of morning sunlight through hoar-frost.” That exact moment when sun hits ice crystals on leaves on trees before they melt. Exists for minutes, requires witness, disappears.</p>
<p><em>Industries</em> suggests a sense of scale, perpetuity, production without pause. No witness required. You can’t wrap your arms around industries, unlike a tree.</p>
<p>Ammil was a particularly obvious gem of a word in Robert Macfarlane’s <em>Landmarks</em>, an inquiry into how language shapes our perception of terrain, weather and place. Lost words gain life through use – if you use them, we use them, they’re not truly lost.</p>
<p>In a post-LLM world, everything can be generated. Text pours out at industrial pace. Links proliferate without providence, provenance unknown. Products multiply, bearing the uncredited fingerprints of millions.</p>
<p><span class="brand">ammil industries</span> is a small-r research group exploring what remains authentic when everything can be synthetic.</p>
<p>We write, build tools, and create visualizations that trace the care, craft, and work required to persist.</p>
]]></content:encoded>
        </item>
    </channel>
</rss>