Sunday, June 14, 2026

Apparently, we've just invented AI

The other evening I overheard a conversation about AI and its implications, now that we have it. This morning I read a post saying that it was hard to believe that ChatGPT was released only four years ago and now AI is everywhere, and how that might be the quickest adoption of a new technology in history.

I'm sure you can find plenty of examples the story yourself: Around four years ago, we didn't have AI. Then ChatGPT happened, and we do. What is AI? It's what LLM-based systems like ChatGPT, Claude and Gemini do, especially now that these systems are agentic, that is, they can break down tasks and coordinate a collection of agents and subagents in order to complete them.

I spent some time looking for a word (and asking an AI to find one) to convey the feeling that something is completely predictable and yet still somewhat surprising and came up with droll, ironic, paradoxical and a few others, but none of them quite fit.

A quick look at the AI label on this blog (and the other one) will tell you I've been watching this space for a while. The second Intermittent Conjecture post, back in 2010, mentioned AI in the past tense. The thesis was that there were plenty of applications around that would have been considered to unquestionably be AI in the early days of AI research, but they weren't in 2010 because they just didn't have that "I'll know it when I see it" quality that would cause the general public to say: Yes, that's it, that's Artificial Intelligence.

I gave the examples of "a neural network mining some pile of data, or even a chess program [i.e., that could regularly beat the best human players], or voice-enabled phone," all of which were around by 2010. Facial recognition and machine translation of natural language were also widely available at the time, although current versions work better, as one would hope.

The mechanisms behind the current generation of AI have their roots in research into connectionism in the late 1980s, which is generally considered the second wave of research into computing based on neural networks, the first having run from the 1940s through the 1960s. The general idea of machines mimicking human behavior is ancient, but in the context of modern computers it goes back to Turing's 1950 paper Computing Machinery and Intelligence, which introduced the idea of the "imitation game," which we now call the "Turing test." Systems that people took for human and communicated with accordingly first appeared in the late 1960s and early 1970s and more have appeared in the years since.

So it's natural to have a certain sense of "Wait, now everybody thinks we have AI?" but on the other hand it doesn't seem surprising at all, because something significant did happen when ChatGPT came out. LLM-based systems are simply much better at conversing in natural language than anything that came before.

One reason is fluency. An LLM-based system can answer question after question in fluent natural language. It can spit out page after page of prose that looks for all the world like a person wrote it, not just in the syntax and vocabulary but in tone and structure. It's not hard to write a hand-coded Markov chain that will produce at least mostly grammatical sentences, but it won't really sound human and it won't be able to answer questions. LLMs are the first approach that allows an extended two-way conversation without "the man behind the curtain" appearing in short order.

The second reason is the range of topics you can converse about. The first 'L' in LLM is for large. LLMs are trained on trillions, or even hundreds of trillions of tokens (words, more or less). By comparison, the entire US Library of Congress collection comprises a few trillion words. Without digging too deeply into what the numbers actually mean, it's not unreasonable to compare the sheer volume of training data to "all books ever published." Whatever topic you might want to ask about, there's a good chance that something related to it is in the training data, in sufficient quantity that the model can produce a few coherent paragraphs about it.

Before ChatGPT there was nothing widely available -- and hardly anything available at all -- that could converse with an average person in human language and appear knowledgeable on a wide range of topics. Artificial systems were able, and had long been able, to do a variety of tasks that can reasonably said to require some form of intelligence, but until ChatGPT everything was in the category of "Yeah, that's interesting, and even useful, but it's clearly not really intelligence." The particular task of conversing with a human on an open-ended variety of topics was the first AI task that really fit the "I'll know it when I see it" bill.

All this is fine with me. In everyday usage, LLMs are AI and nothing before them was. Common usage makes sense in terms of people's expectations of what artificial intelligence ought to mean. Everyday usage doesn't have to match up with technical definitions. 

Still, I'm uneasy with a couple of aspects of all this. First is the idea that AI is one single thing, whether LLMs or something else. Just as intelligence comprises a number of abilities, artificial intelligence is many different things, each capturing some portion of what we call intelligence in living things.

Tying into this is the idea that artificial intelligence necessarily means artificial general intelligence (AGI) or superhuman intelligence, or even the creation of a new, sentient species. Yes, ChatGPT crossed a threshold into something that people could generally agree could be called AI, but only in one particular sense. It did not cross a threshold into everything that AI could possibly mean.

Fortunately, after spending time actually conversing with the things and observing their behavior, people seem to have generally concluded that, even though LLMs are AI, they're not all-powerful or superhuman, except in the literal sense that they can do some things that humans can't -- as can many things.

How do we anthropomorphize software, and why?

To anthropomorphize something is to attribute human qualities to it, whether it actually has those qualities or not. Compugeeks do this a lot, maybe not everyone but many of us. It's quite common to hear someone talk about what a particular piece of code thinks, or to say that a particular server is unhappy, or that a system is confused, and so on.

This was going on long before there were LLMs and I'm not even sure people do it more with LLMs than with ordinary code, though it has a distinctly different flavor with LLMs ("No, stop trying to patch the kernel so my parser's unit tests will pass. Why do you want to do that? What are you even thinking??")

We do this even though we know perfectly well that fifty lines of Python aren't thinking anything at all, and that an LLM-driven coding agent isn't actually trying to be annoying. Anthropomorphizing isn't treating something non-human as an actual human. We attribute some human qualities but not all.

To take an example, sorting a list of things into a given order, say, alphabetically, is a very useful operation because it enables fast algorithms like binary search. It's much faster to find a particular item in a sorted list than in one in a random order. If you give such an algorithm unsorted input, it won't behave correctly. If you track down a particular case of this happening, you might say "It expected the input to be sorted" and even "That's not its fault. We need to fix whatever gave it the unsorted input".

In a case like this, the code is standing in for the author. The author used an algorithm that required sorted input, with the expectation that anyone calling it would actually provide sorted input. As long as that's clearly noted, the author did their job and it's not their fault if the code fails on unsorted input. In other cases, we interpret behavior in terms of human behavior.

To take another example, if a server that normally runs without incident suddenly starts reporting a lot of errors, you might say "That server is angry," because it is very visibly reporting that something is going wrong. If a server tends to get bogged down due to some internal issue and start rejecting requests, you might say "It's in a mood", as in something like "Our service had to reject requests because the server it calls for FooService was in a mood". Or you could say it's "feeling unwell", or any of a number of other things. The common thread is that the server is not behaving as it usually would, and the reasons aren't clearly understood.

As far as I know there's not really a geek-standard way of saying such things, and what people say may well depend on the details of how a service tends to act. In other words, servers can have personalities.

What sort of human traits do we tend to attribute to software? Some of the more common ones are

  • Knowledge: "It doesn't know whether this list could be shared, so it has to make a defensive copy"
  • Goals: "It's trying to call FooService, but FooService is down, so it just sits there in a loop"
  • Emotional and physical states: "FooServer is angry/unwell" "This code will get confused and panic if you give it unsorted input"
  • Communication: "FooServer and BarServer talk to each other" "The executor asks the coordinator for the next task to execute"

Are there any human traits that can't be attributed to software? Probably not. Metaphors are fundamental to human thought and people can be very creative in applying them. Nonetheless, some examples come across as deliberately fanciful

  • "FooServer and BarServer are scheming together to make sure this query fails"
  • "This system lives in a happy world of unicorns and rainbows"
  • "FooServer is lonely because no one wants to talk to it"
  • "This code has decided that existence has no meaning and all results are equally valid"

The more I go over this, the more I think there's nothing special here about computing. We anthropomorphize all sorts of things: Other animals ("That cat is happy"), vehicles ("It's not a pretty car, but it's been a loyal friend through the years"), the weather ("The sun is trying to poke its way through the clouds") or really anything that can act on its own, or even appear to. Software fits very comfortably into that category.

As with metaphors in general, anthropomorphizing can be nearly invisible, as with the executor asking for tasks, or deliberately vivid, as with deciding existence has no meaning, or somewhere in between, as with not knowing whether a list could be shared. When a metaphor is conspicuous, we recognize it as such. When it's not, we just use it.



Postscript: In re-reading, it struck me that the examples I gave, like "parser's unit tests" and algorithms that expect sorted input, are more than a little dated. While it's not impossible that a working software engineer would end up writing a parser or a function that requires sorted input, if you're designing a web service you're much probably more concerned about things like UX on the front end and scaling and security on the back end. I stuck with the examples anyway for familiarity. Topics like parsing and binary search have been taught continuously for generations, so they're universally familiar, unlike whatever I was working on last week.