<https://www.ribbonfarm.com/2022/02/10/tools> Tea...
# linking-together
k
https://www.ribbonfarm.com/2022/02/10/tools Teaser: There are two kinds of tools: user-friendly tools, and physics-friendly tools. Physics-friendly tools force you to grow in a specific disciplined way, while user-friendly tools save you the trouble of a specific kind of growth and discipline. Whether you use the saved effort to grow somewhere else, or merely grow lazier, is up to you. Most people choose a little of both, and grow more leisured, and we call this empowerment. Physics-friendly tools feel like real tools, and never let you forget that they exist. But if you grow good enough at wielding them, they allow you to forget that you exist. User-friendly tools feel like alert servants, and never let you forget that you exist. If you grow good enough at wielding them, they allow you to forget that they exist. When a tool allows you to completely forget that you exist, we call it mastery. When it allows you to completely forget the tool exists, we call it luxury. (Alright, I'm going to quote the whole thing at this rate. Skip to end.) There’s fundamental-limit phenomenology around minimum-viable tooling. A machine that flies has to have a certain minimal complexity, and building one will take tooling of a corresponding level of minimal complexity. Periodically, there is a bout of enthusiasm in the technology world for getting past the current limits of minimum-viable tooling, and so you get somewhat faddish movements like the no-code/low-code.. Premature user-friendliness is the root of all toolchain jankiness.. Simpler, more user-friendly tooling is the result of improved understanding, not increased concern for human comfort and convenience.
🤔 2
👀 1
s
love it, pocketed for later reading. I also recommend this book for more deeper thoughts: https://www.amazon.com/World-Beyond-Your-Head-Distraction/dp/0374535914
k
An interesting view on tool space. I can't say I like his labels very much, but his three dimensions look very useful. I have seen the physics/user-friendly axis alluded to many times, but never with an explicit label or a good discussion. The "praxis" and "poiesis" axes look relevant for systems design: you want high-poiesis tools for building complex systems, but high-praxis tools to connect them. I don't see why a tool couldn't cover both, but I can't think of any that does.
k
By labels do you mean the names "praxis" and "poeisis"?
k
Yes, and also "physics-friendly".
t
I agree that the labels could be much better. If I understand correctly, he calls a tool user-friendly if there's a 1:1 relationship between the concepts that the user already knows and the concepts expressed in the tool. Similarly, a tool is physics-friendly if there's a 1:1 relationship between the concepts expressed in the tool and those that underlie the mechanism in the real world. He might have engineering examples in mind - e.g., it would be hard to create a user interface for launching a rocket without using physical concepts such as momentum and energy according to their precise mathematical definitions. I think "domain-friendly" would be a more generally applicable label though, instead of "physics-friendly". I didn't figure out poeisis and praxis on my first read. Anyone want to try defining what those mean?
k
I have taken these to be Greek words with no additional interpretation: • ποίησις = creation, fabrication • πρᾶξις = action But then, why use Greek words instead of English terms that everybody understands?
k
Venkat's not really a programmer, and he has a way of doing things that brings either annoyance or insight depending on the blog post. It probably depends on the reader's mental models as well. He does try to define terms in each post, to his credit (and also because the way he uses the terms diverges over time 😄). Here:
The praxis dimension determines how a tool is situated in its environment. The poeisis dimension determines its intrinsic tendencies.
Shell scripting is high praxis, low poeisis. Shell scripts live in the wide world, naturally aware of everything from the local computer’s capabilities to the entire internet. Scripting in a highly sandboxed language like Matlab is low praxis, high poeisis. Matlab scripts are naturally aware of nothing except the little IDE world that contains them.
I wonder where he'd position Python on that axis. I suspect he'd put it near Matlab just because he can't figure out pip and virtualenv and so he can't install any third-party libraries or run a server (~10 LoC) or client (~3 LoC) So yes, one of these axes makes more sense than the others (and now I notice that my quotes above were all about it). I wonder if the other two should become a single axis. Or maybe these are quadrants and we're missing one. I wonder if he's primed to see 3 axes because of https://www.ribbonfarm.com/2015/01/16/on-the-design-of-escaped-realities. Then again, he's written a bunch of stuff in between, and I may be showing just what's memorable to me.
k
I am indeed tempted to collapse those two axes into one, from "system" to "inter-system glue", or from "bulk" to "surface" to stick to the physics analogy.
k
The strongest version of his thesis I can think of is approximately the image in the escaped realities article I linked. Every tool depends on the world (praxis), changes the world (domain), and changes the mental model of the tool user (poeisis). The relative proportions vary from tool to tool.