This post has been doing the rounds recently, from Steve Krouse of Val Town, pointed to by Maggie Appleton among others. The title captures the thought perfectly:
We already have a phrase for code that nobody understands: legacy code.
Code that nobody understands is tech debt.
We're seeing how experienced developers are both making use of new tools and also concerned about the impact of those tools in the hands of those less experienced. Will they just be used for throwaway prototypes, or will they be creating endlessly more tech debt and legacy code used in production systems? Who will have to fix the resulting problems? They believe it'll be people like them of course; but who knows whether it'll actually be slightly better AI coders (vibe coding all the way down)?
The alternative view is that we'll develop a wider sense of software quality. Like the spectrum between DIY house repairs and DIY tools through to professional builders or artisan joinery or furniture that meets product and fire safety requirements. You'd be wary of buying a house or even a ladder created by a hobbyist, although you may be comfortable putting up your own shelves. Will you feel the same way when you think about an app developer before you click to download?
Every Single Human. Like. Always.
As someone recently commented on LinkedIn, one way you know that we're not in an AI coding bubble that will pop is that all the experienced people who built many web technologies and tools are personally diving in (having skipped blockchain, VR and other hype cycle technologies). Case in point: Rands (Michael Lopp). It isn't vibe coding, it is getting the robots to dance. Lots of valuable insights here, in his inimitable style, such as asking the robots to make a spec and iterate on that together before asking them to code. He sees parallels between learning the skills to work with AI and leadership skills to work with people:
Learning how to get the robots to dance for you will make you a better leader of both robots and humans.
Persona vectors: Monitoring and controlling character traits in language models
I'm enjoying this trend of having a comprehensive, easy to understand explanation of a proper paper. There's a lofty goal here: being able to detect and adjust character or personality traits in AI systems (either the biases encoded during pre-training or even how it might change during one conversation). Something unique about LLMs, compared to humans and their character traits, is that you can just ask them to role play a personality in order to detect how it manifests inside the network. Although thinking about it, we do have a version of that for people, using fMRI experiments. The authors do point out the limitations (it may not work for every model and every trait). Another unique aspect of how we work with LLMs (compared to human psychiatry and psychology) is that we can directly change the models to supress these "persona vectors", by "steering" during training or inference, or flagging problematic training data.
How do we know if a model is acting evil, or sycophantic? In this work they use a different model acting as a judge, compared with judgments from two human judges. They build on early work from Jan Betley and others on "emergent misalignment", that shows how a model deliberately fine-tuned to produce insecure code will act in a misaligned way across a broad range of unrelated behaviours.
This research was led by Runjin Chen and Andy Arditi, both Anthropic Fellows, although using Qwen and Llama open source models. Had the authors wanted a more controversial title to needle their competitors at Google they could have called this "Don't be Evil" :).
TITAA #69: Braitenberg Vehicle Agents
Finally this week a shout out to an awesome update from Things I Think Are Awesome. It is a great sweep through many recent development in creative AI, video generation and so on. But even better, a reflection back to Vehicles, a 1986 book by Valentino Braitenberg that was very influential on me and others in a much earlier era of AI, and one clearly worth re-reading in the context of modern LLMs.