this is a terribly simple UI, really just a place to drag a file and run a simple data conversion.
and yet -- I wouldn't have bothered to code it manually. only worth it because it literally took 10 seconds to code both the data conversion and the GUI
It’s also neat that I now have this GUI tool and can quickly reach for it whenever I need.
I think ChatGPT w/ plugins could have produced a similar UX for a single conversion, but wouldn’t have left me with a solid reusable tool
Also, interestingly I haven’t even bothered to read the code.
Just checked a couple example outputs which was enough to give me confidence that it does the right thing
Just a tiny, real, useful example of a pattern I’m excited about: personal AI-generated software tools
Siri: responds immediately with a written sentence that I can read in the blink of an eye. Efficient.
ChatGPT: takes a while, slowly speaks out loud the answer
Takeaway for me: if I’m engaged with the task and can look at a screen, voice input + visual output is a nice efficient combo. Voice input is faster than typing but don’t necessarily need voice *output*
What if -- despite all the hype -- we are in fact underestimating the effect LLMs will have on the nature of software distribution and end-user programming? some early, v tentative thoughts: 1/
it seems likely to me that all computer users will soon have ability to 1) develop small software tools from scratch, 2) describe *changes* they'd like made to existing software they're already using. what will this mean for software ecosystems?? 2/
you, skeptic: "nooo but the LLM-generated software will be lower-quality than handcoded software by pro teams: filled with bugs, uglier, bad... 😡 "
Yeah totally true... also all qualities which also apply to spreadsheets vs "real apps"! 3/
We already talk a lot about "liveness" (fast visible feedback) in programming, but this paper argues there's another quality we want: *domain-specific* UIs for editing programs.
They call this quality "richness".
I've already found this to be a useful lens to apply in my work. Often a programming system that "seems vaguely cool" is only live or only rich, and if you have the vocabulary, you can be more attuned to possibilities of going further along one axis...
1/ "Build an app with a spreadsheet" is a mainstream idea now (Airtable, Glide, Coda, Notion, etc) but I believe there's still so much room to push this model further.
Quick list of some (lesser-known??) projects that I find thought-provoking in this space:
2/ We've seen "project tracker" and "inventory list" a bunch, but what's the ceiling on building complex software w/ spreadsheets?
Here's Alan Kay speculating in 1984 (!) about how you could use a spreadsheet and a drawing app to build a word processor
3/ The details of his explanation get intricate and I'm not sure if they'd work, but I like his motivation. The idea isn't that everyone will build their own word processor. It's that when they "open the hood" of their existing tools, they have a chance of understanding/tweaking
Consider jotting down a recipe. Where do you put it?
Could put it in a notes app: simple, fast, low-ceremony.
Or put it in a "proper" recipe app. Gives you nice features like scaling up the ingredients, but also more rigid and formal.
Why can't we have both?? 2/
Potluck is a research prototype where you start with a text note, and gradually turn it into an interactive tool. You only interpret structure and add computation when you need it.
Eg: write down a coffee recipe as text, then scale it up computationally 3/
Interesting looking at the docs for NeXT WebObjects and revisiting their rationale for "why you need an ORM layer instead of just putting your biz logic directly in the database"...
1) "Databases are slow so you need an ORM"
Makes sense in an architecture where DB queries require network roundtrip. But not true if your DB is colocated w/ your logic / is fast!
2) "Your logic is now portable across databases"
This one seems kinda legit, although portability is dicey in practice. Even migrating between "postgres-wire-compatible" DBs is not trivial