Large Language Models (LLMs), what are they good for? Not absolutely nothing, but for me it is a limited set of things. I've been doing these computer things for a while, so my thoughts on this subject are nuanced. In practice, my use of LLMs and other forms of AI is limited, but I thought that I would share the exact ways in which I use it and why.
This story begins many tech busts ago. Back then I used to hand-code programs using the C programming language. Not that fancy C++ you may have heard of, but its progenitor, C. I would write it as Kernighan and Ritchie intended. Some of my peers followed the Wall and used Perl, but not me. I wanted that statically typed and compiled performance that only C could give me. Then came web-based applications. The Perl guys were showing how cool it was to write CGI scripts. At first I resisted, but at some point I had to get with the times or get left behind.
The world was changing and web applications were taking hold. Servers were getting faster and expected delivery times for softtware were getting shorter. So, like many people, I had to switch from slow rolling performant compiled code by hand to slinging interpreted scripts like a short order cook.
The scripts got more complicated. We added frameworks and then more tooling. We expanded our Integrated Development Environments (IDEs) to help us manage the complexity. In many regards we were getting further away from the code. But, I believe, we were getting closer to solving the end user's problems.
To make software more humanistic, we collectively decided to take advantage of the fact that computing power was quickly getting more powerful. To do that we had to improve our tooling. But we also had to give up some control. Rather than knowing the exact memory locations I would use, I let the compiler and garbage collector do that work. I shifted to thinking to higher level concerns.
And, just as I learned to stop worrying about which memory address my variables were stored at, maybe the time has come for me to stop worrying about the exact words used to get the computer to do what I want it to do. I have learned that my real goal when creating software is to build things that people can use. The tools only matter, to the end users, in so much as they enable me to deliver delightful software.
So, I use LLM backed coding tools, specifically Claude Code, to write applications now. Almost every piece of code I write now is done with the assistance of AI. I use AI as a tool to create this site and every application I build now.
The switch away from slowly and methodically writing statically-typed and compiled code to quickly shipping interpreted scripts did have some predictable down sides. More defects were shipped to production. To some extent it didn't matter, web applications can be updated frequently without requiring a user to install anything new. However, too many defects is a drag on the overall pace of delivery, and it can erode users' trust in the software.
So, we developed new processes and tooling to minimize defects. Accordingly, we will have to develop new processes and tools to address the inevitable downsides that come with agentic coding practices. This is why I am writing tooling to coordinate teams of specialized AI agents. The speed of testing and validating code has to keep pace with the speed of generating it. Many companies are starting to learn this now.
Algorithms have paired with computer programs since the beginning. Like manual memory management, the explicit use of algorithms was a necessity when computing resources were scarce. Today there are many coders who don't strictly think of implementing algorithms in any traditional sense. They are not considering the asymptotic complexity of the routines they are writing; they pick a tool that handles that for them.
LLMs are just a collection of mathematically complex algorithms. Their complexity means that how they work doesn't automatically make sense to very many people. People who have worked at a shop and have had to make change almost certainly use the cashiers algorithm, and they do it intuitively.
With what we are calling AI, our algorithms have reached new levels of incomprehensibility for most people, but at the end of the day they are still algorithms - processes humans use to solve complex problems. And, one of the skills when dealing with algorithms is know when and where to apply them.
Maybe an LLM could have written this page for me. But, would you be interested in knowing what the LLM thinks about this topic, or are you here to know what I think about it? First, probably no one is interested in what I think about this topic, but I'd guess that even fewer are interested to know what an LLM thinks. So, I don't use LLMs to write articles for me. However, I think readers get annoyed when I leave in too many grammatical and spelling errors, so I do use LLMs to check my spelling and grammar.
But, writing is a funny thing. I can write something that is grammatically incorrect and the reader can still make meaning from it. When Mark Twain wrote Adventures of Huckleberry Finn he wanted to authentically convey the period. In my mind, that authenticity to the period and setting is what made Huck Finn a classic. Twain had editors who tried to correct his work, but for him they were stripping part of its essence.
Kurt Vonnegut's advice for writters was to write with a specific audience, perhaps an individual person, in mind. I understand the principle to be that if you are writing for too broad an audience then your message will be diluted. And, LLMs are nothing more than an aggregation of all known works, they represent the pinnacle of too broad. That's why I frequently ignore the LLMs advice when I ask it to check my grammar. That could be why you are annoyed by some writing quirk that I have, but it's the side-effect of trying to say something interesting.
For the same reasons I am not a fan of using LLMs for writing, I am not a fan of using AI for visual arts. Additionally, getting away from computers for a while is the point of film photography. The limits imposed by frame counts and film costs is the point of film photography. Getting out in the real world and noticing is the point of film photography. For those reasons, I do not use AI to generate images for me.
To be clear, I do edit my photos once they are digitized. I understand that those tools may use some form of AI behind the scenes. I'm fine with that for removing dust spots from my scans. I am not fine with adding elements to images that weren't there or fundamentally changing the feeling of a scene. I'm not knocking people who do those things, it's just not my jam.
Like Henri Cartier-Bresson, I like to show the frame borders of my film shots. I want to prove - to myself - that I produced an image as my mind's eye saw it in the moment. But, also like Cartier-Bresson, I will break that rule if my preparedness or skill wasn't able to keep up with the image I visualized. The skill of photography is learning how to see, and I feel I will never get better if I am not honest with myself about what I thought I saw.
For full transparency, I have actually built AI image generation tools in the past. I do have a background in algorithms and computer vision. That experience probably contributes to my thoughts on the subject today. I may have old posts on this site that contain AI generated images, but they will all be very obvious.
I am aware I have said both that I use LLMs for coding because it is just a tool and that I don't use AI for writing and visual arts because it takes over the creative process. I understand those look like contradiction, but it makes sense to me. When I code, I am looking for the generally accepted solution to a particular problem. When I try to be artistic, I am looking for things that are uniquely real or an expression of me and my particular, unique set of lived experiences.
My reasoning here could be flawed. I could have slipped away from pure logic and slid into the realm of feelings. But, that is what makes me human, I guess. I don't make sense all the time. And I don't have to.