You are viewing archived messages.
Go here to search the history.

Ivan Reese 2024-01-01 21:17:17

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.

Ivan Reese 2024-01-01 21:25:44

(You can play Dys4ia in the browser here.)

Personal Dynamic Media 2024-01-01 22:30:25

Rocky's Boots (archive.org/details/RockysBoots41), Robot Odyssey (archive.org/details/robot-odyssey), and The Incredible Machine (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 pythontutor.com/python-compiler.html

There's also 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.

Jack Rusher 2024-01-02 10:48:18

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!

Max Kreminski 2024-01-03 00:01:33

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

Tom Lieber 2024-01-03 01:14:05

@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.

Tom Lieber 2024-01-03 01:34:36

“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?”

Personal Dynamic Media 2024-01-03 02:06:46
Ivan Reese 2024-01-03 04:23:11

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?)

Ivan Reese 2024-01-03 04:23:48

Bret Victor's "unthinkable thoughts" cries out for articulation, in spite of itself.

Ivan Reese 2024-01-03 04:26:05

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".

Zeeshan Lakhani 2024-01-03 18:46:09

Ivan Reese you’ve probably seen tomasp.net/coeffects, which is a live environment to interact with theoretical published work (Tomas’s thesis)

Andrew F 2024-01-03 20:28:15

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.)

William Taysom 2024-01-04 00:33:40

Tom Lieber 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.

Steve Krouse 2024-01-04 13:26:04

Hey friends!

I don't know if you're familiar with this harvard linguist on tiktok but he's the best: tiktok.com/@etymologynerd?lang=en

I think it would be AWESOME if someone from "our community" would make those style of tiktoks, but about computer and programming history. I think it would become quite popular and be super enriching and educational

I have some amount of capacity to help and sponsor this, but I mostly wanted to put it out there as a general request for someone in our community to take up the gauntlet in this new medium

Arcade Wise 2024-01-06 21:59:18

Ooo I could take a crack at it

Ivan Lugo 2024-01-06 16:05:41

Heya internetpeoples ❤ I’ve spent a long time refining this and brought in “The LLMs” to help craft the tone here, and I think I’ve finally gotten it to a point where I feel like it hits my message and question, and doesn’t assume too much negativity or… doomcalling, heh. Thanks for the time and shared space, as always.


I’ve despaired when stuck on problems I just couldn’t crack. I’ve also felt the joy of those “aha!” moments when things finally click. We’ve all been there as coders. While documentation and searches can help fill gaps, little replaces another human sitting alongside, guiding with patience earned from experience. In those moments when someone more seasoned gave guidance, I felt hope renewed. How might we foster more of these vital human connections?

Key Discussion Points:

  • Knowledge flows when passion meets patience . I’m grateful for the patient coders who “reached down” to guide me. Let’s discuss barriers hampering these relationships. Generalizations about certain groups being “unwilling” to help are counterproductive. However, empathetic mentorship remains scarce. How might we change incentives?
  • Truly supporting newcomers requires understanding their frustrations are valid. I want to open a thoughtful discussion on constructive ways we can keep improving in this regard.
  • There are always exceptions by those dedicated to lifting others up. But much room remains for improving access, channels and incentives for more direct peer sharing across experience levels. It’s on each of us to reflect on where we can have an impact.

I welcome reactions, shared experiences, and dialogue toward that aim. How might we strengthen coder communities through human connections? Where do you see the biggest opportunities? Together, I believe we can guide positive change.

Ivan Lugo 2024-01-06 16:14:50

As an experiment, here’s the history of how I tried to shape this message, for those curious as to anything I left out: chat.openai.com/share/36430388-e4b5-41f7-b630-9936e6415aea

Jason Morris 2024-01-06 19:17:36

I will say that there are two sides to the teacher/student relationship, and for the relationship to be effective, both sides need to exercise skills that are far outside the skills usually associated with coding. As examples the teacher needs to be aware of their own curse of expertise, and find ways to empathise with the student. The student needs to understand chesterton's fence, and assume there are things they don't know... I suspect training, measurement, and incentives aligned with those sorts of skills would help, but it's a guess.

Jimmy Miller 2024-01-07 05:40:54

Thanks for posting this. I can completely relate with where you are coming from and think this is something we need to do better at.

The incentives right now are the same incentives we've defaulted to forever. Money. Money and power. Get paid to mentor, get paid to teach, get paid to {{X}}. It's not enough. It's old thinking. It has to go away. We humans need to understand sooner rather than later that empowering those are going to outlive you is the right thing to do - not the most profitable or selfly-gainful.

I have ideas and hopes. They all rely on 'human empathy', which I just explained is often.. missing. I also understand I have a 'chip'. I personally feel this every minute of every day when I work-for-money or work-for-fun.

I tried doing the paid mentor thing. When I did it, it was originally pitched to me as a company paying me to mentor a Junior engineer. Turns out, the junior people were often paying out of pocket.

Even at the time, I told the company I was contracting through, I'd happily do it for free if the people I was "mentoring" were into programming. That was the real problem, no one I talked to actually cared about programming at all. Some had parents who had forced them to do it. Others I couldn't quite tell what the motivation was, perhaps the hopes of easy money?

What I really wanted was not the money, but a filter. If you make an open call for being a mentor, sadly the kinds of people that often take you up on it are a bit much. I've offered in the past and had very strange conversations with people (seemingly messaging me when they are high).

I want a filter not because I want self-gain, but because I want these conversations to be meaningful. It is hard to find people who are actually a good match. I will say, maybe future of coding is itself a filter? Not sure. If you (anyone not just OP) are reading this and think I could help you, happy to chat and explore that.

Inside a company is a bit easier. I've had a number of people that I've worked with in my career that I've helped level up. It's much easier there, because you can basically prescreen them. You can see how they work. You can figure out what level they are at. You can see if you get along as people. They can decide if they want to ask you questions as well. You also aren't taking time of the other obligations you have, this just is one of those obligations.

I will say that I've pretty much always been on the mentoring someone else rather than being mentored side. I'm sure some of that is my fault. I am perhaps a bit over confident in my own skill and was especially so earlier in my career.

where's the channel #of-interns-and-newbies , or #of-young-tech-enthusiasts ? These are tighly coupled with the idea, yet we've still fallen victim to the idea of grouping up folks by ideas and geography - we instead have #of-ai , #india , #in-atlanta

I'm open to the idea of those channels. I will say, I think #devlog-together would be a good place to post about things you are working on and struggling with. I think one problem with newbie channels is that if no one answers, it can feel even worse. I remember posting in them before. The more specific problem here is that there are too many different technologies people use, so you might not get an answer. Unless the goal is more just to meet other people at a similar stage of career or age as you. I definitely can relate to the lack of geography being meaningful to me. Fairly certain I'm the only one here from the Indianapolis area.

Finally, on the meta use of llms, I think your original writeup with some editing was better than what ended up being posted here. The llmified version felt like I was jumping into a conversation that was already ongoing and I lacked context. For example: "Generalizations about certain groups being “unwilling” to help are counterproductive" seems like feedback you got from generalizing about groups, but in the context of the message you hadn't done that.

I'd definitely recommend taking your original thoughts, cutting out a bunch and asking questions and expressing frustrations more directly. That's why I quoted from your original message, it was much more clear to me.