the scapegoat dev

LLMs are a revolution in open source

ai image of a computer baba yaga chicken as a black and white ink drawing

After working extensively with LLMs over the last couple of years, and more intensely over the last few months, I am pretty confident that one of the domains they are really effective tools is programming (I don't know much about copywriting and other more formulaic jobs in writing, but I suspect they are very effective at those tasks as well).

I have come to think that big tech (Google and its consorts) cannibalized itself by developing this technology. These tools are infinitely more effective at making individuals and small teams productive than a big corporation. There are a few reasons I've come to this conclusion.

While this is all ultimately quite speculative, I am quite confident in my predictions, seeing how quite a few of them have already come through, the speed and richness of tools being built by individuals and my personal experience exploring what these things can do.

Let me expand on some of these points.

LLMs are ultimately democratic, community-centric technologies

For LLMs to be effective, they require a few things:

While big tech companies currently have the upper hand because they bootstrapped themselves with internal research, an expert workforce and leveraging enormous amounts of computation, it has become clear with the leak of llama that an extremely vibrant open research community is now able to iterate at the speed of commodity hardware.

Community efforts run circles around anything commercial

I can't really see a future where big tech can keep up with a motivated community (and motivated it is, as any look at social media or tech websites will show you). As a caveat, I am mostly working by myself, using the OpenAI APIs, and haven't explored much of what already exists out there. I have shamefully not given Llama and its ilk a run for their money.

We're already at the point where thousands of dedicated community members work together to:

What this concretely means is for example:

Another effect of an LLM's training corpus being natural language is that the barrier to contribution is almost nil. Rating and correcting a Q/A training corpus is a lower effort task than writing documentation. This is currently touted as the easiest way for non-technical people or beginners to contribute to open-source efforts. Furthermore, content like articles about writing X in Y or how to use the latest framework Z to do W is incredibly useful to keep models up to date.

LLMs are a fundamentally democratic technology.

From my limited research on Vicuna and Llama, I have no doubt that models that run on (beefy) commodity hardware are likely to be extremely useful for software development. Unlike the steam engine or previous automation technologies, which because of their sheer physicality could hardly be owned or operated by individuals, the physical requirements for an LLM are a set of compute resources available from a variety of vendors. While I'm not an expert, I think that the compute costs, especially on inference, are actually quite reasonable. As a fairly heavy user, I consume around 80k tokens a day, totalling around 4 minutes of computing. This is probably (again, complete opacity on OpenAI's side) not insignificant in terms of energy, but hopefully in line with other resources I use (and the price seems to suggest so), such as search engines or my desktop computer idling away (which it does much less now that I can tab complete unit tests).

Prompt engineering is about building specialized, convivial tools

"Prompt engineering" is often derided on social media. These takes are missing the point that "prompt engineering" is "programming in natural language", and programming is engineering and a skill you can continuously improve at. Prompt engineering is not putting together 4 random sentences and calling it a day. Instead, it is understanding why these sentences are more effective than others, and what contextual information needs to be embedded in them. This work can require significant programming effort, as all the augmented LLM tools out there show (langchain and other agent frameworks, vector databases, etc...). A most striking example is this article about reverse engineering copilot. I encourage everyone to take a hacker-minded approach to prompting LLMs and discover its depth. Don't ask for something and accept the answer. Regenerate, reword, explore!

The goal of prompt engineering is to write precise language in order to enable users to use less precise language. What I mean by that is that a well-built LLM-based tool is about developing a UX that allows a normal user to casually interact with complex technology. As seen by many people I've spoken to, the current extremely crude UX (ChatGPT really is nothing more than a textarea in front of a HTTP API) already allows non-programmers to create real software applications, using software APIs that were not designed with LLMs in mind. I have seen people build Excel plugins, video games, and entire websites. This is the essence of conviviality, and requires these tools and training corpuses to be open-source. It means that not only can they be "fixed" by experts (think, bringing your car to a mechanic), they can allow non-experts to create their own tools, or at least make existing tools their own.

Even as a fairly experienced programmer, the number of things I have built that I wouldn't have dreamt of building before, either because of the drudgery involved, or by being afraid of the initial step, continues to impress me. I built a stacktrace handler for go that explains why the program crashes and suggests a fix, all in 1h while eating breakfast.

These tools directly eat big tech's bottom line

Having all this effort packaged inside developer friendly tools, outside of ad-ridden platforms and SEO spam is life-changing. Why would I need to search for something on Google, jump down a SEO-plastered rabbit-hole only to find some shoddy example that I first need to adapt to my codebase when I can just press CTRL-space, enter my question and get an answer that fits the surrounding code?

Where this will lead, and what technology companies will do against it is anyone's guess. But they are aware of the problem, as evidenced by Missing The Moat With AI (which makes me wish I had published this draft earlier, because I've been carrying it with me for a long time).

Conclusion

Large language models are such an odd, disruptive technology and people perceive in them what they want to see. I want to see them as very powerful programming tools and that's why I have focused on them. Discussion of the implications of generating plausible language at scale is completely outside of my realm of expertise. In terms of programming, I am incredibly excited about the current project, which is moving forward faster than expected.

I think that all the properties of LLMs discussed in the article will lead to a migration of current tech jobs from supporting big tech (and its revenue models based on the exploitation of our common attention) to domains that until now struggled to have the technological support they deserve. Many of the engineers migrating will start companies to solve real problems on a smaller scale. If Google can optimize its ads with a big cluster of GPUs and 2 engineers, that means that there is now a tremendous amount of engineering talent available to work for smaller companies (retail, manufacturing, civil works, health) or build the products currently being used to capture users as actual customer-oriented products instead (think Gmail, Google Docs, etc...). These are projects that now are in reach of LLM-augmented development teams (be it opensource or commercial).

I am however keeping a more technical discussion of LLM programming and why it is such a powerful tool for small-scale software development for another article.

As for myself, I am building my own vast array of tools (currently not really usable by people other than myself, partly on purpose to hopefully contribute to wider community efforts. While most of my educational efforts have been at the personal level, I hope to provide more resources on how to program effectively with LLMs, as I found it to be a rich and deep topic that is not trivial.