
Future of Coding
A Small Matter of Programming by Bonnie Nardi
Podcast summary created with Snipd AI
Quick takeaways
- End user programming is most valuable when it helps users accomplish important tasks in the real world, rather than focusing on the computer itself.
- Formal languages play a significant role in end user programming, enabling users to interact with computers and achieve desired outcomes.
- Conversation alone may not be the ideal medium for programming, formal languages provide a clearer and more precise way to communicate instructions and achieve tasks.
- A paradigm shift in programming is necessary to achieve true end user programming, incorporating different ways of thinking and conceptualizing programming.
- To achieve end user programming, better tools are needed to allow programmers to build tools themselves and address social and infrastructural barriers.
Deep dives
Task-specific programming languages
The book explores the idea of task-specific programming languages that would allow end users to freely write their own applications.
Visual application frameworks
The book discusses the importance of visual frameworks that would provide a user-friendly interface for creating and manipulating applications.
Collaborative work practices
The book emphasizes the need for collaboration between users in the process of creating and modifying applications.
Challenges in achieving end user programming
While the goal of end user programming is to empower users to create their own applications, limitations and constraints still exist, and the role of programmers in enabling such capabilities is crucial.
The Relevance of End User Programming
End user programming is most relevant when users need to use a computer to manipulate digital information in some direct way. This includes tasks like writing in a word processor, calculating in a spreadsheet, creating models in CAD programs, or creating entertainment products like games or videos. End user programming is most valuable when it helps users accomplish important tasks in the real world, rather than focusing on the computer itself.
Different Perspectives on Programming
There are two main perspectives on programming: those who are interested in computers as a thing in themselves and those who see programming as a means to accomplish a task. End user programmers fall into the latter category, as they are focused on getting something done and are less concerned with the computer itself. This distinction is important when designing programming tools and systems.
The Role of Formal Languages in End User Programming
Formal languages play a significant role in end user programming. They provide a structured and prescribed form for communication, allowing effective conversation between users and computers. While conversation alone may not be sufficient for programming, formal languages provide a way to effectively convey tasks, instructions, and goals to computers. These languages enable users to interact with computers and achieve desired outcomes.
Exploring the Limitations of Conversation in Programming
Conversation alone may not be the ideal medium for programming. The complexities of conversation, such as turn-taking and repair, and the reliance on context make it challenging for computers to understand and respond appropriately. While conversational interfaces like GPT have shown promise, they still lack the contextual understanding and specificity needed for certain tasks. Formal languages, on the other hand, provide a clearer and more precise way to communicate instructions and achieve tasks.
Importance of Universally True Elements in Programming
The podcast episode emphasizes the importance of focusing on universally true elements in programming. It suggests that instead of chasing after end user programming as a specific goal, it is crucial to understand the fundamental aspects of human-computer relationships and the role of computers. The episode highlights the need for a paradigm shift in programming that goes beyond simply changing syntax or user interfaces, but rather involves revisiting the concepts and cognitive processes involved. It argues that a more radical and diverse approach is required to achieve true end user programming, incorporating different ways of thinking and conceptualizing programming.
Challenges in Achieving End User Programming
The podcast discusses the challenges in achieving end user programming. It acknowledges that while there are efforts to introduce programming in education, simply teaching programming in schools is not the complete solution. The episode points out that learning programming for specific tasks or jobs can still be difficult for many individuals, as they often require more traditional programming tools and languages. Additionally, it highlights the difficulty of modifying existing applications or systems due to their closed-off nature. The podcast suggests that in order to achieve end user programming, there is a need for better tools that allow programmers to build tools themselves, while also addressing the social and infrastructural barriers that restrict user customization and modification of software.
This community is a big tent. We welcome folks from all backgrounds, and all levels of experience with computers. Heck, on our last episode, we celebrated an article written by someone who is, rounding down, a lawyer! A constant question I ponder is: what's the best way to introduce someone to the world of FoC? If someone is a workaday programmer, or a non-programmer, what can we share with them to help them understand our area of interest?
A personal favourite is the New Media Reader, but it's long and dense. An obvious crowd-pleaser is Inventing on Principle.
Bonnie Nardi's A Small Matter of Programming deserves a place on the list, especially if the reader is already an avid programmer who doesn't yet understand the point of end-user programming. They might ask, "Why should typical computer users bother learning to program?" Well, that's the wrong question! Instead, we should start broader. Why do we use computers? What do we use them to do? What happens when they don't do what we want? Who controls what they do? Will this ever change? What change do we want? Nardi challenges us to explore these questions, and gives the reader a gentle but definitive push in a positive direction.
Next time, we're… considered harmful?
#### $
We have launched a Patreon!
If, with the warmth in your heart and the wind in your wallet, you so choose to support this show then please know that we are tremendously grateful.
Producing this show takes a minor mountain of effort, and while the countless throngs of adoring fair-weather fans will surely arrive eventually, the small kilo-cadre of diehard listeners we've accrued so far makes each new episode a true joy to share. Through thick and thin (mostly thin since the sponsorship landscape turned barren) we're going to keep doing our darnedest to make something thought-provoking with an independent spirit. If that tickles you pink, throw some wood in our fireplace! (Yes, Ivan is writing this, how can you tell?)
Also, it doesn't hurt that the 2nd bonus episode — "Inherently Spatial" — is one of the best episodes of the show yet. It defrags so hard; you'll love it.
#### Init
- Bug report: Frog Fractions. Oh the indignity!
- Hey, it's The Witness in our show notes again.
- Getting Over It with Bennett Foddy is the better game, even if it spawned Only Up and other copycats that miss the point. The Looker gets the point.
- Getting Over It is a triumph that emerged from a genre of games that are hard to play: Octodad, QWOP, I Am Bread
- Braid arguably spawned the genre of high-minded & heady puzzlers that all try to say something profound through their design.
- Cookie Clicker and Universal Paperclips are good incremental games.
- Jump King and Only Up are intentionally bad. Flappy Bird was accidentally good. Surgeon Simulator and Goat Simulator are purely for the laughs. Stanley Parable, like Getting Over It, brings in the voice of the creator to (say) invite rumination on the fourth wall, which is what make them transcendent.
- Here's the trailer for Bennett Foddy's new game, Baby Steps.
- So on the one hand we have all these "bad" and """bad""" and sometimes badgames, which actually end up doing quite well in advancing the culture. On the other hand we have The Witness, The Talos Principal, Swapper, Antichamber, QUBE, and all these high-minded puzzly games, which despite their best efforts to say something through their design… kinda don't.
- When comparing the "interactivity" of these games, it's tempting to talk about the mechanics (or dynamics), but that formal definition feels a little too precise. We mean something looser — something closer to the colloquial meaning when "Gamers" talk about "game mechanics".
- Silent Football might be an example of "sports as art". Mao is a card game where explaining the rules is forbidden.
#### Main
- The Partially Examined Life is one of Jimmy's favourite philosophy podcasts.
- Two essays from Scientific American's 1991 Special Issue Communications, Computers and Networks are referenced in the first chapter, one by Larry Tesler and one by Alan Kay. The other essays in this issue are also quite interesting to reflect on from our position 30 years hence.
- Apple's Knowledge Navigator video, and HP's 1995 video, are speculative fiction marketing about conversational agents.
- Rewind.ai is one of those "Computer, when did I last degauss the tachyon masticator?" tools. (Oh, Lifestreams…)
- S-GPT is Federico Viticci's iOS/Mac Shortcut that strings together ChatGPT and various Shortcuts features, so that you can do some nifty automation stuff via a conversational interface. It feels like similar things could be built — heck, probably already have been built — with "If-Tuh-Tuh-Tuh" or Zapier.
- When Ivan reaches for domain-specific terminology, LUT, Arri Alexa, and Redcome easily because, like, he wishes he had occasion to use them.
- To hear the story about the Secret Service busting down young Jimmy's door, listen to his episode on the Code With Jason podcast.
- C Is Not a Low-level Language — a fantastic article about the illusion that our source code closely matches what actually happens during execution.
- What Follows from Empirical Software Research? Not much, according to Jimmy in this delightful article.
- Jimmy likes to reference Minecraft's "redstone" which acts a bit like a programming system, so here, have a video about redstone.
- Ivan saw this video via Mastodon, about someone making a "real" camera in Blender, and… just… 🤯 — https://www.youtube.com/watch?v=YE9rEQAGpLw
- Jimmy's orchestra struggled with an inappropriately formal approach to Coldplay's Viva La Vida.
- Knuth's up-arrow notation
One meaning of "end-user programming" is about allowing people to build their own software. Another is about modifying existing software, and here are two interesting links related to this second meaning:
-
sprout.place is a lovely website where you decorate a little virtual space together with some remote friends. It's like a MySpace page mashed-up with a Zoom hang, but better.
-
Geoffrey Litt is a researcher who has tackled both meanings of EUP, but his work on the second meaning is especially interesting. For instance: he worked on Riffle, which explored the consequences of putting the full state of an app inside a reactive database, which is especially interesting if you consider what can be done if this database is available to, rather than hidden from, the end user.
-
To the best of our recollection, Jonathan Edwards has advocated for "end-programmer programming" as a helpful step toward end-user programming.
Get in touch, ask us questions, please no more mp3s ahh I can still hear the bones yuck:
- Ivan: Mastodon • Email
- Jimmy: Mastodon • Twitter
- DM us in the FoC Slack
- Support the show on Patreon
- lol stands for "lots of love"
https://futureofcoding.org/episodes/066
Support us on Patreon: https://www.patreon.com/futureofcoding
See omnystudio.com/listener for privacy information.