Curious Place

Clay, Bricks: A conversation with ChatGPT

Me:
I’m writing a blog post on malleable software and end user programming. Can you write a short, preferably funny, description of malleable software?


GPT:
Malleable software is like Play-Doh for programmers. You can bend it, stretch it, mold it, and shape it to fit your needs. And just like Play-Doh, sometimes you accidentally mix colors and end up with a mess. But hey, that's just part of the fun!


Me:
Wow, that was really good.


GPT:
Thank you! I'm glad you liked it.


Me:
And can you do the same for end user programming?


GPT:
Sure, here's my attempt: End user programming is like giving the keys to the kingdom to the people who actually live there. It's empowering non-programmers to take control of their software and customize it to their specific needs. It's like giving a chef access to the kitchen and ingredients they need to make their own recipe, instead of just ordering off the menu. So, let the end users program their way to their perfect dish!


Me:
Nice!


GPT:
Thank you! I'm happy to help.


Me:
I mean, most people aren’t chefs…just by giving someone the ingredients doesn’t mean they’re going to make good food.


GPT:
That's a fair point. Perhaps a better analogy would be giving a non-musician access to an instrument and allowing them to compose their own music, rather than just listening to someone else's. End user programming is about providing the tools and resources for people to create something that is uniquely their own, even if they don't have formal training or expertise. Just like anyone can learn to play a few chords on a guitar, anyone can learn to program and customize their software to fit their needs.


Me:
Okay, so then end user programming isn’t something people would use every day. It’s just something they use when they want to customize their software.


GPT:
Not necessarily. End user programming can actually be used on a daily basis by people who need to automate repetitive tasks, create simple scripts, or build custom workflows. For example, someone who works with a lot of data might use end user programming to create macros or scripts that automate data processing. Or a marketer might use end user programming to create custom reports or dashboards that track specific metrics. End user programming can be a powerful tool for anyone who wants to streamline their work and increase their productivity.


Me:
I think the key thing though is that it’s possible, but not required, to do those things. When I see malleable systems like Emacs, i can’t help but note that they really aren’t for the average worker. Like your analogy above, it’s a chunk of Play-Doh, not a finished thing.


GPT:
Yes, that is a good point. Malleable software and end user programming can be powerful tools, but they do require a certain level of technical skill and comfort with programming concepts. It's not necessarily something that every user will need or want to use, and it's important to provide user-friendly interfaces and documentation to make the experience as accessible as possible. However, for those who are interested in customizing their software and have the skills to do so, malleable software and end user programming can offer a lot of flexibility and power.


Me:
Do you think there’s a way to expose some malleable software concepts to people who don’t have much technical skill or comfort with programming?


GPT:
Yes, I believe there are ways to expose malleable software concepts to people who don't have much technical skill or comfort with programming. One way to do this is through visual programming tools or low-code platforms, which allow users to create custom workflows and applications using drag-and-drop interfaces and pre-built components. Another approach is to offer user-friendly tutorials and documentation that walk users through the process of customizing their software, using step-by-step instructions and real-world examples. Additionally, providing access to a community of users who can offer support and guidance can be helpful in making malleable software more accessible to a wider audience.


Me:
But those are just ways to make existing end user programming systems more friendly. I’m looking for ways to make the fundamental building blocks of malleable software accessible. I wonder if, since you’re a LLM and you might not be able to come up with significantly original ideas, I’ve reached the end of this conversation. No offense.


GPT:
No offense taken. I understand your question and it's a valid one. Making the fundamental building blocks of malleable software more accessible to non-technical users is a challenging problem, but there are some potential solutions. One possibility is to develop visual metaphors or graphical representations for programming concepts, similar to Blockly or Scratch, which can make programming more intuitive for non-technical users. Another approach is to leverage natural language processing and machine learning to enable users to program using everyday language, rather than having to learn a programming language. These are just a few ideas, and there is still much work to be done in making malleable software more accessible to a wider audience.


Me:
Ah, natural language processing! This ties right into an interesting topic, which is how LLMs might help with end user programming. The basic idea is that users could ask an LLM to write a program to accomplish a task, resulting in both a better understanding of how to accomplish something as well as a usable program. But again, this feels like a way to make a system that isn’t deeply designed for end user programming more friendly. I wonder if the idea is that better systems would evolve from this practice?


GPT:
Yes, natural language processing could be a powerful tool for making end user programming more accessible to non-technical users. By enabling users to describe the task they want to accomplish in natural language, and then automatically generating the corresponding program, this approach could potentially eliminate the need for users to learn a programming language or interface with a complex programming environment. As for the idea of using LLMs to help with end user programming, it's an interesting concept. The LLM could potentially act as a "programming assistant," helping users to translate their natural language descriptions into executable code. And you're right that this approach could potentially lead to the development of better systems that are more user-friendly and accessible to a wider audience. Ultimately, the goal is to make malleable software and end user programming more approachable for people of all technical skill levels, and I believe that using LLMs and natural language processing could be one step in that direction.


Me:
Thanks for your time!


GPT:
You're welcome! It was my pleasure to assist you. If you have any further questions or need any more help, feel free to let me know.