I recall coming across some opinions Against interactivity. I think in support of showing the thing, rather than making the user interact to see the thing.
Is there a soundbite for this? Are there any good links? I don't know where I encountered this opinion I think a few times, but I found something in one passage searching Bret Victors Explorable Explanations.
I wonder is this the most concrete link or reference I'll get, or does it ring a bell for someone else?
Yeah, I'm thinking you're thinking the Interactivity Considered Harmful* section of Magic Ink (which we did an episode about — maybe that's why you're thinking there's a "sound bite" of it)
*DIJKSTRA
This section and summary also helpful:
futureofcoding.org/notes/bret-victor/magic-ink.html#interactivity-considered-harmful
It sounds like the goal quote was found, but I want to share a related one from the Malofiej journalism conference in 2016
““If you make a tooltip or rollover, assume no one will ever see it.”
85% of page visitors simply ignore them, missing out on information hidden behind interaction.”
From Archie Tse (NYT graphics editor) on why the Times was doing fewer interactives
github.com/archietse/malofiej-2016/blob/master/tse-malofiej-2016-slides.pdf
Class reference Cameron. "Readers just want to scroll" another suitable soundbite!
I find a lot of statements these days describes a fact about something and then call it the “best”.
It’s like someone saying “look number 2 is so great, it’s the only even prime number, it’s so cool that it’s used as the base of digital systems, so we should use 2"
And someone else says: “well, number 3 is cool because it’s the first Mersenne prime, and it has a super cool divisibility rule, so we should use 3”.
At the end of the day, if the question is 1+1, then 2 is infinitly better than 3, and the other way around if the question is 4-1. And if you just need some positive integer as a placehold or something, then well, they are the same.
People seems to like and re-post these information a lot. I think these facts do provide some values, like the whole entertainment industry, it fulfills the curiosity of our minds and keeps us, well, entertained.
But drawing the conclusion that something is better, or something should be used instead of another thing based on these facts just feels off to me. It’s especially bad IMO, when people use these statements in PR reviews.
I totally agree. Better and worse is always a decision to make in a specific context. What you call facts I tend to call forces. Mostly they take the form of trade-offs. Everything makes some things easy and other things difficult.
Love this example/analogy. It’s fascinating to me how most people in technology get away with arguing that whatever technical thing they like best and are most familiar with is objectively superior to everything else in all cases. They do, probably, because the “in all cases” is usually silent and most of us have a complicated relationship to anything context-dependent.
I have a question I hope someone here can answer. I am at something of a crossroads in my career and privileged enough to be able to pursue almost anything. When I tell people the big problems I'd like to make an impact on, it's education, specifically science education. I want more people to understand how the scientific method works and how we use it to gain more understanding.
I have passively read about education (Montessori, Bruner, Piaget, Pappert), followed Alan Kay and the smalltalk story, and I was a math teacher for a couple of years. I also teach currently online.
I can't help but think that there is more to using computers than reproducing old media, and that the code-debug cycle is a good way to refine our understanding. And so maybe there is something there, using programming and interactivity as a medium for exploration of ideas.
However, I don't have much more of a vision than that. I was talking to my wife about it yesterday and came up with an interesting phrasing: I want to do what Montessori did with her learning materials but with computers as a medium.
I would appreciate any and all links to people, conferences, reading material, etc., that are related to this idea.
Just to be clear, I don't mean teaching kids to code. And I don't mean using software to support the current educational paradigm (e.g., Chromebooks in schools, etc.). People seem to automatically roll back to those two pits.
Changing Minds Computers, Learning, and Literacy. by Andrea diSessa is kinda continuation of Papert's ideas & Logo work.
diSessa designed Boxer with the goals of being an environment conductive to "computational literacy", not just learning to code, but using code to explore and communicate ideas.
Personally, I found the book does a curiously mixed job.
I’d recommend having a look at Andy Matuschak’s work.
Also worth a look: May-li Khoe’s work, especially from her time at Khan Academy.
And, pretty popular amongst people in this forum and perhaps too obvious, but you didn’t mention him, so you might also want to take a look at the early presentations and essays of Bret Victor.
Also somewhat related: Michael Nielsen.
About May-Li Khoe
Another not-exactly-but-maybe-tangential: Mark Guzdial has written prolifically on education research & expanding CS teaching to wider groups, with focus on what they hope to get out of it.
definitely worth reading Teaching Machines by Audrey Watters detailing the history of educational technology
Bret Victor's latest work with DynamicLand is along those lines of helping people understand complex systems
A nice example is DrGeo. It has a long history (Wikipedia says 16 years), so I suspect there is a lot to be learned from its evolution over time.
@Eric Normand Andy Matuschak has the most up to date ideas on imagining learning with today's tech. Worth checking out: youtube.com/live/AZDX1Vv0HYc?feature=shared
Although, as I pointed out to Andy as well, the biggest factor on effective learning for me trends to be map-making for a domain. Today's AIs are a bit hyperfocused on verbal learning, so new ideas are still needed.
You might find our work on Wikifunctions interesting (CACM paper, website). I'd be happy to chat more about it. I can't really put my finger on it, on the exact phrasing, but our believe is that "functions are knowledge" and that making functions available to everyone and to allow everyone to share and collaborate on functions, can make a difference. But we don't have a good way to phrase that yet.
I'm in pursuit of the next part of my career. I don't know what it will look like, but I want it to be productive.
I’ve really enjoyed switch from web dev (in Clojure) stuff to compiler stuff. But current job is not perfect. But compilers are so much more fun and interesting imho
I sum up what Jimmy said; it’s literally day-night when you migrate your stuff to a more concrete software use case than web development
I honestly I’m this path as well so I’ll let you know as soon as I get a job on the field haha
pond’ring aloud:
The value of Gutenberg’s printing press is that it taught kids to read, not to build printing presses.
The value of computers is that they teach kids to ???, not to write code.
pond’ring aloud:
I wonder if the problem with VPLs is the word “language”.
It appears to me that the word “programming” has been generally accepted to mean “sequential language” or writing sequential codes (aka “coding”). I view this view as being too restrictive. Programming is more than just commanding a machine with sequentialistic instructions. Programming a CPU , though, is - by definition - sequentialistic. But,,, programming a machine(s) need not be sequentialistic. Especially in the age of nothing-is-central. In fact, LLMs are an example of non-sequentialism. The machines that run LLMs were programmed, arduously, in sequential notation, but, the inner success of LLMs is not sequential, but something else (massively parallel plinko?).
VPLs and DPLs are, to me, not sequentialistic things. Maybe they should be called “notations” instead of “languages”? VNP and DNP? Visual Notation for Programming, Diagrammatic Notation for Programming? [In which case, “programming languages” as we know them, are TNPs - Textual Notations for Programming].
In fact, programming is not the difficult part. Re-programming is the novel aspect of Design that computers bring to the world. We have been programming machines to do single things for centuries (using metal lathes, etc.). This time through, though, we have built machines capable of doing many things.
On one end of the spectrum we have dumb machines, where we use “language” to make it do things, on the other end of the spectrum, we have human beings, we use “X” to make them do things. I think we need to find a word between “language” and “X”
observation: Electrical Engineers create 2 manifestations of each circuit. (1) is the circuit itself and (2) a schematic on paper for other Engineers to read. You can understand (1), but you have to spend time to reverse-engineer what’s there. #2 is (usually) more useful in communicating to other Engineers what is going on, without needing them to reverse engineer the actual circuit #1. You still have to spend a few years in university to understand #2, but, once you learn how to read #2, you can devise circuits and show other Engineers what you intended to accomplish. Likewise, Structural Engineers build bridges with bolts and I-beams, and built human-understandable drawings using blueprints. Programmers are trying to squeeze both #1 and #2 into the same notation. AFAICT, concern #1 usually wins and programmers have to spend time reverse-engineering code, since #2 doesn’t exist. In programming, programmers should be able to create #1 from #2, but, instead programmers create #1 from #1 and leave #2 mostly unaddressed.
Paul Tarvydas Programmers squeeze #1 and #2 together, only if you consider the code to be the product. However, what if you consider the (running) program the actual product? Wouldn’t that put programmers back in line with electrical and structural engineers?
A schematic or a blueprint are a state description optimized for legibility, so there is complexity missing, which is present in the instantiation of the schematic or blueprint in the real world. I believe the same could be said about the process description of an algorithm, which leaves out the actual values that are processed when the program runs.
Paul Tarvydas love your thoughts here! I try to use “notation” (or “executable notation”) as a replacement for “programming language” these days. It’s more inclusive to non-textual programming languages and alternative paradigms of computing.
You might also like “diagrammatic” from github.com/Little-Languages/reading-club/blob/main/topics/visual%20notation%20and%20diagrams/Trace%2C%20Writing%2C%20Diagram-%20Reflections%20on%20Spatiality%2C%20Intuition%2C%20Graphical%20Practices%20and%20Thinking.pdf
Stefan Lesser Good point. In reading your reply, I begin to wonder if there’s something between #1 and #2 (#1.5?) in software that isn’t there in other kinds of engineering. I don’t think that programmers are doing a good job of communicating to other programmers what their Design Intent (DI) is…
Paul Tarvydas The only difference I see between electrical/structural engineers and programmers in this example is that the former create state descriptions (blueprints), whereas the latter create process descriptions (recipes).
But both are generalizable in the sense that they are both abstract descriptions, leaving out detail.
I suspect what makes them feel qualitatively different is the cross-over from temporal to spatial domain in one that’s missing in the other. When programmers have to inspect the actual result — the running program in a debugger that makes state visible — then they “have arrived” on the same level the electrical/structural engineers operate at. But usually programmers describe the thing that “builds” the thing, whereas engineers build the thing. (Which is why I asked previously To build or not to build?)
“But what about declarative programming languages?”
While they tend to describe results and are less concerned about the process, they are still ultimately generative — they generate a result from specific input (functional programming) or from axioms (logical programming).
(I’m just thinking out loud because I just read Out of the Tar Pit again and thought I try applying what I learned…)
Konrad Hinsen Formal specifications are too flat (not layered) and too detailed and too ivory-tower. Comments are disconnected and become misleading. I hope to prove that we can do better.
Stefan Lesser I like your use of these words. I agree that blueprints are state descriptions. I agree that programs are process descriptions. I believe that electronics schematics are both , though - blueprints and recipes. Schematics contain a lot of implementation details. I think that the difference between schematics and code is that you can lasso areas on schematics and treat them in a stand-alone manner, whereas you can’t do this with code (programmers are only “fooled” into believing that they can). Items on electronic schematics are loosely-coupled (asynchronous) whereas items in code are tightly-coupled (synchronous). I hope to elaborate…
Paul Tarvydas I fully agree that the state of formal methods today needs some serious improvement. There are some good ideas for getting out of the ivory tower in this talk by Shriram Krishnamurthi. As for flatness, that's something I write about in my submission to Onwards! Essays this year. And something I am working on under the title "Digital Scientific Notations", which are just formal specifications under another name and with a different intent.
Related to my last post, where I believe we shouldn’t make decisions outside the context of a problem or goal.
I’ve observed the same issue with secondary goals, where they are discussed outside the context of primary goals.
I don’t know if this bothers other people, but it bothers me a lot. Maybe I’m not smart enough to see the implied connections.
One example I can give is that many times I’ve been given the goal of “consistency,” whether in the UI or the code style. I’m not saying “consistency” is a bad thing, but without connecting it to the primary pre-shared goal, the value of this secondary goal becomes trivial and nullified. Logically, it doesn’t make sense either, especially for a start-up, because a start-up is doing something new, and you can’t do new things by pursuing consistency. If we did things consistently, we’d still be using XML instead of JSON.
Again, to be clear, I’m not saying doing things consistently is bad. I’m just saying that, for me, when given the goal of “consistency” without the context of why it’s important for our primary goal, I’d be much more motivated.
Another example is “patterns.” I think initially “patterns” are just solutions to some pre-existing problems, but we put too much emphasis on them to the point where we forget about the goals of these patterns, and the patterns themselves become the goal. To be clear, I’m not saying patterns are bad or that we shouldn’t use them. We should know them, in the same way we should know other just-in-case knowledge, to perform better. Some patterns are just cool, and we derive joy from them, the same way we get joy from movies and music. I’m just saying we probably shouldn’t treat them as primary goals (unless in school, I guess, where you get points for implementing a pattern).
Now that I think about it, this may just be a communication issue within an organization, where secondary goals are communicated without the connection to primary goals. I’ve never worked in a big organization, and I wonder how they do it. Also, am I alone in this? Do other people feel demoralized too when given just a secondary goal?
I get demoralized too. What usually happens is I start asking questions like "consistent with what?" Then I don't get a satisfying answer, I realize people setting the goals have no idea what they're doing, and my mood spirals downward from there.
I’m taking unpaid time off right now and taking to therapist. To be fair I have more struggles than this, and a lot of the struggles I have is from myself
At the best of times, I realize quickly and try to find a kindred spirit, someone else who sees the insanity I see. I've found that most people don't care. They want to code and be left alone.
The phenomenon is normal, but I need someone to commiserate with about it privately. I've found that if I do it publicly, people think I'm complaining.