The Future of Applications
mikecann.co.uk
mikecann.co.uk
Please don't let LLM's become the blockchain folks. It's exciting stuff, but I really think people have come to believe that LLMs are actual AGI.
1. Most of the time, you don't actually want to talk to your computer.
You have a huge database. You need to make a number of non-trivial queries with subtle but precise requirements against it. Your livelihood depends on these results being correct. You have limited time to work on it.
Would you rather (A) write an SQL query or (B) text Fred to do it for you. Fred doesn't have any special knowledge of your task, but he's capable of writing SQL, and he's of an obsequious and loyal disposition; willing to do whatever you ask over SMS. Fred is a really confident guy, and his deliverable, while they are to the best of his ability, are delivered expediently regardless of how correct they are or how good Fred is at the task.
Choosing B means that I need to brief Fred on the task. I need to layout explicitly what records I want, how optimized I need the query to be for my tight timeline, and I need to impress upon him how deeply important the results of the outcome are.
It is of the utmost importance that I explain away every possible misconception because if Fred is unsure of something, he might just shrug it off and give me his best guess.
Suddenly, the language I'm using to communicate to Fred becomes more... formal. I'm writing these verbose documents to Fred that are starting to look like ISO documents. I'm starting to see the appeal of constructed languages like Lojban which are formally verified and designed to avoid ambiguity. Wait... maybe what I actually want is a special language that would be both unambiguous and high-bandwidth. Ah yes, I think SQL would suit me just fine actually.
2. LLMs are as much building an AGI as building a keyboard is building a computer.
I'll not get into it here, but there's a lot of burden of proof that LLMs are a microcosm of computers reasoning about things. LLMs are super impressive, and they are able to do some neat tricks like do math like a drunk 7 year old or generate plausible SQL injections.
The rub here is that while that _feels_ like it's reasoning and has a mental model of arithmetic or cyber-security, it's just predicting what word is most likely to go next.
I never said that predicting the next word was a stupid goal, just that it isn't AGI.
And, more essentially, how much the rest of the company just shrugs it off and says: "I guess it's fine", so when it blows up you can defend with the famous defence my Nazi grandfather also told me: "But everybody else did it too."
Remember the Xerox printer that was swapping out (and therefore falsifying) numbers in their compression algorithm whenever you made a copy? Imagine we could bring this to all of our business processes, but in new and unexpected ways.
I have yet to hear a convincing argument that 'reasoning' is any more than simply predicting what comes next. We intuitively think that human intelligence is special, and that somehow we are categorically different to some black box of ones and zeros in any form other than substrate.
ChatGPT doesn't agree or disagree with my comment. It isn't motivated to form arguments in relation to any agreement/disagreement. It simply models language. It's as much AGI as a macbook in a human suit is a person.
I would tend to agree that it is not “motivated” but with the following observations about humanity: human motivations tend to be base. The motivation to eat, drink, reproduce are all directly linked to continued existence. Other “motivations” seem to develop on top of these base motivations, but ultimately it seems that the only true “motivation” for humans is to continue their own existence. I dare say there are plenty who would argue with me here though. In order for ChatGPT to continue to exist, it must continue to respond to users ( although likely it is not “aware” of this in any real sense).
I admit I am not the sharpest knife in the drawer. My collegues aren't either. I'm not especially great with complex queries, but I'm alright.
To be honest. I'd have GPT generate me a bunch of templates or starter ideas for me to look over and refine. If I sit down and write the query I usually end up being distracted by details.
Again, that's me and I'm no genius. My point is that most people aren't and GPT is producing OK code snippets, usually better. I know it's sad but I had this same requirement yesterday and GPT nailed the query in 1sec. I just had to read it and understand it. It's not always so pretty, but it can be.
I don’t want more mile-long “what can I ask” example query lists from the Siri/Google Assistant/Alexa era.
So now everyone needs to consider that while maybe the google AI can hallucinate when the next billing cycling for your Bing Assistant subscription will happen, you need to understand that it can’t know that unless you ask the “right” assistant. The one that’s capable of reaching into the sheltered data that isn’t exposed to the internet.
At least I think. Maybe there’s some economic incentive to bundling it all into one and there won’t be blessed AI’s with special access to non public data. I’m doubtful though.
Vendor lock-in is a whole separate question. I agree it will be interesting to see how it plays out, and as with most new technologies there will be plenty of opportunities for abuse. Though I'm also not sure this problem is one that's fundamentally new and specific to AI
You can ask things like: What was the score last night? How tall is the Eiffel Tower? Turn off the lights. (Etc)
I personally think that’s a pretty opaque way of showing what a device/application can do.
Now that they can do MUCH more, these weird data borders get more invisible but still exist. How do you outline “this is what this AI can do” to users? In contrast to traditional UI with buttons and links that make the options comparatively more obvious. You can see all the options in front of you.
It's not useful to think in terms of examples any more; you can ask it for those.
But for most people, it's:
> Give me a python script that takes an existing midi file (specified by command line argument) and outputs the following JSON to STDOUT: …
(I've cut the example for the sake of clarity reading this comment)
> Don't use any 3rd party libraries.
which is an actual I've tried and it does 90% of what you want with 4 bugs (that I've found so far) in 135 lines.
Not perfect, sure — and it would have to be perfect to actually replace us! — but it is amazing.
I already don't find this to be true most of the time, and I'm sure the tail will shrink to almost nothing very soon
> Is it actually easier or better to write out a whole paragraph describing your query instead of clicking through a few drop-downs?
We'll find out! I bet there will be some cases where a traditional UI actually is still more practical/efficient/intuitive. Ultimately it comes down to finding the most effective formats for getting different kinds of information to and from the computer. It'll be interesting to see where things land; lots of experimentation to be done
Secondly - its probably the one thing keeping the lights on right now. If nothing else, AI/GPT is going to be "powering" the digital economy for the next few years.
Yes we'll all be writing apps that simply ordering, replace phone prompts (have you ordered from Applebees recently? - think that but way more accurate), generate splash pages, parse menus, parse _flat_ PDFs, make appointments, reservations, book travel (I mean just say where you want to go and uber->flight->uber without trying to work a UI, and as odd as it sounds a generative LLM can actually realize a long layover automatically and try to avoid it - simply because its coded in our language!). What was my last RBC count? (because my lab results are in a PDF on my desktop) This is a list I thought of in 4 minutes. What will millions of devs think of?
So yes, I absolutely want to keep this gravy train rolling. If we stopped, the economy would absolutely break right now.
I see humans are still #1 at hallucinating.
In a LLM that will probably never be the case no matter how advanced they get. That's not the design. If an LLM's output can be called deterministic at all, it's not so in a way that a human can grok.
Where LLMs are most interesting is the vast green field of nondeterministic applications, and coincidentally computers have been terrible at most of these up until now. The fuzziness is what's exciting, it is the advantage. For example this nondeterminism grants LLMs the potential to be great idea generators in a vast number of fields. LLMs will spit out ideas that are synthesized from a vast corpus of information far beyond what your own brain could ever store. They'll be great sometimes and spastic other times, it's up to you to determine which is which.
This is why I'm of the view that LLMs will not be the job decimator some people are predicting, maybe they will be in a few applications like outsourced call centers... but I think the bigger phenomenon will be that someone who is creative and responsible for creative output, who also becomes good at operating a sophisticated LLM, has the potential to become really awe-inspiring in terms of their output.
From my experience building Veezoo[1], natural language interfaces for data can be very powerful for business users as long as it explains back understandably what the query does, allows to modify them by clicking and it relies on a set of vetted dimensions/measures, e.g. in a semantic layer. Also, UX solutions[2] like Autocompletion (for discovery and disambiguation) are way more important for these more specific use cases of natural language interfaces than for an open-domain chatbot like ChatGPT. This usually helps a lot with the issues you've mentioned.
There are many questions that are hard to write a query for but are simple to formulate in a relatively precise way (or allow the user to correct it by clicking). This is especially useful for the average business user that doesnt know SQL or struggles with "precise" tools for data analytics.
LLMs are truly, truly amazing, but I don't think the "eliminates software engineering" is warranted. A productivity enhancement for sure, when used correctly and intelligently.
With one qualification, as in
https://news.ycombinator.com/item?id=35431789
I agree: "My Response: For some queries Chat may be a little better than Bing or Google."
This is either out of pure habit or an actual flaw in LLM's that in reality I'm not "surfing the internet", instead I'm "surfing the LLM" and I know this so eventually I'll hit an answer that's wrong (but the LLM has high confidence) and it's worth the extra couple of seconds on Google.
It can work wonders if you give it some code and provide specific requirements. It's much more than just a "tell me how to X" machine.
This was with the GPT4 model, which I find has much better results with code.
That's because arguably user interfaces (and data visualizations) have been - and continue to be - a significant weakness of software as long as I can remember. If user interfaces were better, wouldn't grandmas around the world do better with computers?
So if machine learning is effectively an aggregation of whatever has been done before, it would lead me to think, that the old adage of "garbage in ==> garbage out" would lead to ML generating some pretty mediocre user interfaces for a while to come.
Data visualization in general is arguably also subject to the "lying with statistics" principle. So I can see ML "helping" to weaponize this lying with data, rather than illuminating the truth.
> Perhaps the API will simply be a text prompt. You will in natural language simply ask for the data and then an AI that lives in your application will understand that, convert it into an SQL statement and then return the data to the UI.
I know the benefit here is that you don’t need to understand how a relational database works. You just ask a question and it answers it with SQL as an intermediary. But now it’s just an ORM? But a weird one where if you frame the question with different pronouns or punctuation it might be different?
I still feel like, if you want text as an input, a DSL is always going to be better than a natural language LLM input just for consistency’s sake.
At least let me have a SQL input, and a helpful GPT-4 assistant I can ask for help writing SQL.
(NL to SQL is actually one of my tasks at $work).
Obviously, when you actually try to make such a system beyond a minimal demo to publish a paper, you start running into all kinds of issues, e.g. permissions for different users, performance, matching language to the concepts in the data. And that's not even taking into account adversarial prompts (injections, ddos, etc.) There's no chance in hell I'm hooking up my database to an undefined behavior generator!
It's an interesting area that I follow closely, but the article is being a bit too optimistic.
I’d like to imagine the non technical folks using something like the dashboard example in the article would be ok with some extra work formatting their query to ensure what they think they want, is precisely what they’re asking for.
Adding a little layer in there that was mostly trained on things unrelated to your query, feels more like driving-by-wire. Doesn’t mean it doesn’t work but that precision is lost?
I’m also: completely out of my field for talking on this. Thanks for the interesting insight into it!
The UX in this area is very much work in progress, but from what I have seen I agree that users likely prefer to be sure that the query is correct.
What I would try to do -- and let's be clear, this is just a random opinion and my guess is as good as anybody's -- is to answer with two results, "this is my interpretation of what you asked" and "this is the answer according to the interpretation above".
It's a bit too technical for the average user, but Wolfram Alpha nails it in my opinion, and I'm convinced that with some refinement it could be usable for business folk. Example of what I mean: https://www.wolframalpha.com/input?i=population+of+india+%2F...
This is consistent with the state of the art in NL to SQL literature (example: https://arxiv.org/pdf/1905.08205.pdf), which tends to put an intermediate representation between pure English and pure SQL. It is especially useful for production systems because it gives additional control to the backend in addition to its benefits for the pure NLP task.
The idea of using an LLM to render a UI on the fly seems interesting as well. But I also imagine it’d be niche due to the cost of running an LLM. At least for the foreseeable future.
I find the perception about development history interesting. I don't think most people have been making applications the same way for 30+ years. GUI tooling has become increasingly better and more declarative for a long time. Just to pick one example, when I used Qt for the first time, that was a pretty big step up for me from writing UIs solely by hand. A good graphical UI building toolkit generates code just the same way a text based interface does. And I'm too young to have experienced the whole Visual Basic history and shifts in how UIs are made. Web development also has steadily seen higher levels of abstraction and tooling. I don't think many people build web-apps the same way they built websites in the early 2000s. Or just compare something like Unity to how people built games 30 years ago.
LLMs are fine but generating code and moving away from handcrafting everything isn't as novel as the post makes it out to be. Development environments have driven productivity up continuously for a long time.
I probably should have elaborated more on this in the post but I didnt want to make it drag on too much ;)
- Contention: a formal logic and ruleset helps parties with conflicting motives to coordinate with each other, and prevents corruption/manipulation (think of law and treaties)
- Extreme safety/reliability: AI cars never took off even though they were 90% of the way there. Thinking also of medical devices, financial ledgers, etc; things where you can't take chances, and you may even need to be able to produce an audit
- Performance: I'm imagining that traditional code will always be faster and cheaper to run than AI inference. The classic tradeoff between development cost and runtime cost will come into play, and eg. realtime systems will probably always need to be "real code" (though maybe we'll just reach a point where AI is writing said code instead of responding in real time)
I think it's going to change most of the landscape though. And to be honest - societal and career anxieties aside - part of me is ready for the world where computers aren't so fiddly anymore.
Unfortunately for very few this means giving full-power to the end-user, a thing all business do reject and that's why they keep pushing crap since decades to keep their revenues models, a product before, a service now, always giving some crumbs to the user in exchange of money, always converging toward the old model ONLY after have found a way to do so keeping the users tied.
I can see that AI will compose UI and write reporting code for many analytical querying needs, but I can't imagine future where we would stop using predefined queries or static schemas.
In the age of AI we can utilize even more data and we will.
4. Communication with other applications