Someone reached out to ask me for more thoughts ab...
# thinking-together
i
Someone reached out to ask me for more thoughts about communicating programming ideas through media other than the academic paper. I wrote a reply, and then decided it would be worth sharing here to see if other folks have their own inspirations they'd like to share, or ideas for how our industry can go paper-free ;) --- I feel like I owe reading an apology. I certainly try to play up my "crank" side on the podcast, but it does run the risk of mixing-up this is being silly with this is thoughtful critique. I have tremendous reverence for the communicative potential of the written word. I just think there are some kinds of ideas that lend themselves better to other forms of expression, or some ideas that can't be written down. For instance, it's very strange to me whenever I read a paper about HCI, especially if they're discussing GUI ideas. Sure, often these papers will be accompanied by a video. But, like, the work being described is about interacting with interfaces. I think the work should be presented as an interface you can interact with! I'm especially fond of Bret's essays, naturally. Bartosz also does great work with visualization, though I feel like he leans a little too heavily on text and that the visualizations are too linear. Amit also does excellent work, but he has the advantage that most of the things he demos are inherently about interactive graphics so they lend themselves naturally to this sort of presentation (not to diminish the incredible effort Amit puts in to these articles). The thing I want to see more of is… people finding ideas that can only be expressed through interaction. I think successfully achieving this requires that someone work natively in interaction, a lot, for a long time. As a result, most of these ideas seem to emerge in the periphery of video games. One of my favourite examples is Dys4ia, a collection of microgames about the trans experience. It uses written language and (meaningfully crude) visual art to set up the plot, but interaction to tell the story. Something I'm very interested in seeing (and have made a few attempts at myself, but nothing worth sharing) is an attempt to create a fully-usable programming environment presented as a game specifically for the purpose of communicating ideas about programming. There've been plenty of the inverse, where a programming system is the setting within which a game takes place (see all the works of Zachtronics, for instance), but I haven't seen anyone do a game as the setting within which actual programming takes place. Closest to that might be something like Minecraft or Dreams (etc), but I don't think those were designed to communicate ideas about programming the way, say, The Witness was designed to communicate a philosophy of science. Another close comparison might be Advent of Code, where you playfully approach programming differently than in your normal work. The programming you do for AoC should feel meaningfully different. Similarly, imagine building your own Rosetta Code from scratch. That should give you a really particular feeling. I think it's related to, say, the feeling of writing a rasterizer for the dozenth time. I think these feelings are ideas, and that there's a whole language of them, and that the language is expressed through the creation of systems. I think if we studied this language, it would guide us toward building different kinds of tools. And hell, you might eventually be able to write a paper about that. (Countdown to someone arguing that this is what Christopher Alexander has made a career of, in a sense.) But I don't think we will arrive at those system-feeling ideas in any way other than by building and playing with systems, and with a particular intention at that.
(You can play Dys4ia in the browser here.)
p
Rocky's Boots (https://archive.org/details/RockysBoots41), Robot Odyssey (https://archive.org/details/robot-odyssey), and The Incredible Machine (https://archive.org/details/tim_20220104) come to mind as being programming game adjacent. Active essays would be a good medium for communicating programming concepts but they haven't caught on yet in general. I've seen some efforts at trying to make the meaning and execution of code more visible, such as https://pythontutor.com/python-compiler.html There's also https://www.toontalk.com/ Lots of recreational programming has taken place in multi-user text adventures such as LP Muds and MOOs. I'm not aware of anything that combines in-game programming with graphical programming and graphical visualization of the program execution.
j
You can imagine my irritation when the ACM committee for our Clerk paper tried to get us to produce a document with zero print-incompatible media 😩 We ultimately had to double publish, once in a completely dead format for the journal and once on the web — and they tried to forbid us to print the URL for the live version in the paper!
m
fwiw, as a demo-liker and a paper-liker, i think we really actually do need both. “paper” doesn’t necessarily have to entail all the current-practice LaTeX-PDF-venue-specific-formatting bullshit necessarily, but “medium-length written document about a software system” has complementary strengths (and weaknesses) to the system itself: • more likely to survive much further into the future than the system itself – software rots so easily • gives insight into the why behind a lot of the design decisions made by the system’s creators – what they were “going for” • captures aspects of the process by which the system was created – what was tried and didn’t work along the way? what was tried and seemed promising, but was ultimately too effortful to ship? which features ended up being “unreasonably effective” and which weren’t worth the implementation effort? etc • can present an idealized trace of interaction with the system – a narrative of how this is meant to be used point #1 feels especially important to me, a lot of my fav systems survive only as papers and i’d never have learned about them if the papers weren’t published. not to undermine the push for more demos at all (i am a huge advocate for more demos) but a complementary demo / paper pair universally makes for best results ime
a
@Max Kreminski I think “people finding ideas that can only be expressed through interaction” is meant to define the value of papers out of existence in this discussion. And I can sort of see it. A 4-page document intending to convey the same ideas as The Witness would probably need to spend all of those pages on reproducing graphics and descriptions of intended mental states. And the process of creating The Witness, early visions of The Witness, etc, aren’t too relevant for conveying those ideas.
“These feelings are ideas … expressed through the creation of systems.” I’ve created an interactive system that evoked feelings exactly once, almost entirely by accident, so I can’t say much except that I think I know what you mean, @Ivan Reese? It seems akin to saying, “A conference paper can’t convey the feeling/idea of riding a bike,” which I think most people would agree with (?) and if I were to put words to the questions you raised in me they would be “How do I notice when I’m riding a bike?” and “How do I teach someone to ride it with that same level of awareness if all I can transmit is software?”
p
i
Writing about things that can't be put to words is wonderful. Hell, we have something called a "love song" which feels like a textbook oxymoron if ever there was one. (That we have a word "oxymoron" suggests that there's a musical equivalent, and interaction equivalent, an artistic equivalent — what are they?)
Bret Victor's "unthinkable thoughts" cries out for articulation, in spite of itself.
Practically speaking, it feels like the pattern I'd like to match on is someone saying "here's a programming-esq interaction, but I don't know what it is or what it means or what it does".
z
@Ivan Reese you’ve probably seen https://tomasp.net/coeffects/, which is a live environment to interact with theoretical published work (Tomas’s thesis)
a
On the topic of systems that evoke feelings, I think of variations on Conway's game of life, and broadly the "set up and run a simulation" category of computational "toys". There was one that recently went mildly viral because it produced structures that (very superficially IMO) resemble cells. That's a feeling. (Re "toys": I very distantly resemble an article about game design that described games as being a combination of a "toy", i.e. some mechanics to interact with where you can cause effects, and a goal state(s) to create with that toy. For an FPS the "toy" is basically moving around and shooting things, and the goal is, well, usually obvious. I instantly adopted this concept and still think about it a lot. Anyway, this idea of a toy is at least somewhat relevant.)
w
@alltom As the resident Witness scholar I'm obliged to add that it's hard to get wet reading about water. I mean the Witness, and many, many other things, are experienced in a way qualitatively distinct from reading about them. Analysis and discussion can add to the experience, but it's a separate thing. Also in a full, complete work, the artist/author is usually the wrong person to ask for analysis and commentary since any necessary background will be appropriately embedded or at least referenced.
j
I think it would be cool if these “visualizations” were incomplete. Like the author sets up 95%, especially the annoying parts like the visual mechanics, but it’s your job to actually do the fun part. I’m gonna try remember this if I ever do an “explainer”