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

Paul Tarvydas 2024-04-29 09:35:12

preliminary musings on bloatware guitarvydas.github.io/2024/04/27/Bloatware.html

Kartik Agaram 2024-04-29 10:16:28

This is extremely clarifying, because it makes it clear you're going in the exact opposite direction to me šŸ˜„

It's only a slight exaggeration to say I want to ship the IDE to "end-users" (scare quotes because I believe the demographic shouldn't exist). The source code should always be available.

So it now seems to me that we've been nodding along to each other that bloat is bad, but our definitions of "bloat" are in opposition. From my perspective, opcodes and the transistors they run on are a necessary evil. Both are bloat without the source code and late binding needed to keep the human in the loop exercising agency over them. Anything else is just disempowering legalism (futureofcoding.org/episodes/065) that is superfluous to requirements.

Konrad Hinsen 2024-04-29 15:25:22

Interesting constrast. I am mostly on Kartik Agaram's side of what I consider important (non-bloat). But I think there's still a lot of overlap between both sides' definitions of bloat. For example code that exists due to technical debt.

Kartik Agaram 2024-04-29 15:28:02

Yeah, there's a reason this wasn't obvious. Mainstream software is bloated by both our definitions!

Fredrik 2024-04-30 12:33:39

Traditional C compilers output code in assembly language , which is piped to an assembler , which is a program that outputs machine code . Modern compilers internally generate code in an intermediate representation , and then output machine code without going through assembly language. If you want to read the output in assembly language, you have to run a disassembler.

Fredrik 2024-04-30 12:49:27

The assumption that the ideal application to ship to end users is all machine code and that anything else is bloat is an interesting one. If you look into it, it quickly becomes obvious that the machine code tends to be more bloated than the source code. That's on x86, an instruction set architecture that was designed to make the machine code as short as possible, at the expense of making the interpreter implemented in hardware more complex and less efficient. Modern alternatives to x86 care less about the compactness of the machine code.

It may actually be less bloated not to ship machine code, but instead ship an intermediate representation that can be JIT-compiled to machine code. Formats such as minified JS, Web Assembly and Dalvik bytecode are examples of more compact formats for shipping that in the end are passed to a JIT compiler that outputs less compact machine code.

Not only are instructions in intermediate representation shorter than in machine code, but intermediate representation can also take advantage of polymorphism, allowing polymorphic code to be shipped only once, whereas the final machine code may come in multiple monomorphic copies.

Konrad Hinsen 2024-04-30 15:19:28

Trying to name a concept: The cognitive surface of software science-in-the-digital-era.khinsen.net/#The%20cognitive%20surface%20of%20software

Has something similar already been discussed, or at least introduced?

Stefan Lesser 2024-04-30 16:01:27

I quite like your distinction between cognitive surface/bulk. It reminds me of affordance after Gibson:

An affordance cuts across the dichotomy of subjective-objective and helps us to understand its inadequacy. It is equally a fact of the environment and a fact of behavior. It is both physical and psychical, yet neither. An affordance points both ways, to the environment and to the observer.

But I wouldnā€™t necessarily say affordance is a better word for what youā€™re after; it just seems to be a useful concept to be familiar with to better understand what you describe.

You also point towards the relational character of it, which I find the most important and interesting aspect, and which is a big step outside of what we like to deal with as programmers. Because it introduces context-dependence and requires specific adaptation ā€” which Iā€™m sure you are very open towards, given your involvement with moldable development.

I wrote a lot lately about intelligibility (your comprehensibility) of systems in a series about simplicity, which seems extremely related to what you think about. I tried to break out of that one-dimensional simple-complex spectrum, which leads to minimalism or reduction of complexity as the only solutions to avoid it, by pulling it apart into two separate dimensions of mechanical and experiential complexity/simplicity, with the former related to the structure of the thing youā€™re looking at and the latter related to your cognitive processing of that structure, which is for instance highly influenced by your familiarity with it. Thatā€™s actually what my essay for Onward! is about.

Anyway, I donā€™t have a better word for you, but if you want to discuss this further, Iā€™m available.

Dennis Hansen 2024-04-30 17:23:24

In "The design of Everyday Things" by Don Norman, he refers to a similar concept called "Discoverability", which refers to whether it possible to determine what actions are possible and the current state of the device." This is is in order to build a "System Image", or a conceptual model of the system you are using, i.e. the the parts and their state, how they relate, how it might change, etc.

IMG_7973.HEIC

Dennis Hansen 2024-04-30 17:26:47

I like the extension though in thinking about the degree to which a system communicates it's state and how it works*, though it is dependent on the users knowledge and ability to pick up on affordances. But perhaps you can refer to what a system is attempting to communicate independent of an observers ability to read it. And you can specific where that communication occurs, especially whether it's apparent through a course of usage or whether it requires digging deeper into things like documentation for purely informative purposes.

Konrad Hinsen 2024-05-01 07:49:07

Stefan Lesser @Dennis Hansen Thanks a lot for your feedback! Gibson's affordances are definitely a concept I should refer to. There's a difference, however, which matters to me: my notion of comprehensibility includes not only "what can this tool do for me" but also "does this tool do anything behind my back that I am not aware of". Spyware would be the obvious case but I have also seen many well-meant small automatisations in computational science that turned out to be in contradiction to the expectations of some users.

The relationality of the concept is very much intended. It may well be interesting as well to judge the amount of information that a system makes accessible independently of what the observer can make of it, but for now I prefer to concentrate on the human-computer interaction aspect.

Stefan Lesser I just re-read the essays you referred to. Good observations, there's definitely a "sweet spot" in complexity, rather than "the less the better". On the other hand, for the specific case of symbolic reasoning (mathematics, software), I can't come up with an example for "too boring because not complex enough". Elegance in mathematics has always been about minimalism, even though different people value different aspects of it differently (e.g. size of a symbolic expression vs. number/complexity of the definitions and theorems required to support it).

Stefan Lesser 2024-05-01 16:10:01

Konrad Hinsen This is super interesting to me, sorry if I take this somewhere weird or not that interesting from your perspective:

When I think of intuition in mathematics, I imagine things like understanding the term rewriting steps of the proof of say Pythagorasā€™ Theorem through symbol manipulation as an analytical/mechanical understanding. Whereas Iā€™d say understanding a geometric proof of the same theorem is at least utilizing some of our intuitive/experiential understanding.

While Iā€™m at it, let me add another example from another domain I know little about. šŸ™‚ The way I understand moldable development I would assume that you relatively quickly notice that the same data structure with the same data in it in different visualizations has a vast range of how easy/difficult the data and its structure can be interpreted and understood. So in your words, if I understand correctly, some of those representations have a larger cognitive surface than others.

I just wonder, and would love to hear your thoughts on this: In mathematics, is it really the nature of mathematics, or more specifically the nature of formal systems and reasoning, that it is just about mechanical/analytical complexity, or have we just settled on a default representation that primarily affords mechanical/analytical reasoning and understanding? And as a consequence we (are led to) ignore (overlook?) intuitive aspects of it?

Asking for a tech philosopher who is worried that in software development we are doing exactly the sameā€¦

Konrad Hinsen 2024-05-01 18:56:23

Stefan Lesser Lots of good questions...

Easy one first: yes, I do believe that different visualizations of the same data structure have different cognitive surfaces, but this depends on the application context and not just on the data structure.

If you talk to professional mathematicians, they regularly point out the importance of intuition in their work. In particular the discovery of interesting relations is mostly a matter of intuition. Formal systems have two roles: (1) supporting intuition for filling in the details, and (2) constructing proofs. Proofs are extremely important because they allow to convert the intuition of individuals into collectively accepted knowledge. That's also why the mathematical literature heavily emphasizes formal approaches.

Computing has inherited this tradition, via Church, Turing, and others. It's not just a matter of symbolic representation affording this type of reasoning, I'd say it's baked even into our hardware. There are lots of different ways to process information. Biological organisms process information contextually, meaning informally. With AI we are making first steps into technological information processing that is contextual rather then formal. I guess we will see more of that. But I also believe that symbolic reasoning in the tradition of mathematics is here to stay. It's just too useful.

Stefan Lesser 2024-05-01 19:41:05

Oh, yes, itā€™s not either-or. Symbolic reasoning isnā€™t bad or wrong, it is obviously useful. Itā€™s more like a ā€œtoo much of a good thingā€¦ā€ situation, as we neglect other important things.

Polarization also comes primarily from analytic thinking: If there are two polar opposites, it must mean either or, as if we can pick only one. But (1) in complex systems polar opposites are just a model, an oversimplified approximation of whatā€™s really going on, and (2) itā€™s aboutā€¦ wellā€¦ some people would use the word balance, you used the term ā€œsweet spotā€, but thatā€™s still too static. Itā€™s a dynamic context-dependent balance that can be different based on context, so we need more than just intelligence to know what weā€™re talking about, but also the wisdom to decide how much of each is needed in which situation.

Context, however, is what we usually try to avoid; in science in favor of discovering context-independent universal rules, and in programming in favor of reuse and scale. Iā€™m optimistic though, as it seems that we slowly wake up to the limitations of trying to brute-force everything with pure logical reasoning and as little context as we get away with. Maybe thatā€™s just because Iā€™m reading this at the momentā€¦

Stefan Lesser 2024-05-01 20:05:49

Oh, and if that wasnā€™t clear, Iā€™m also optimistic because I read your post pointing out the importance of context, the relational nature of comprehensibility, and potential issues with epistemic opacity. Did you just add that? Miraculously, I hadnā€™t heard this term before, otherwise I probably wouldā€™ve used it in half of my writing.

Stefan Lesser 2024-05-01 20:31:24

Fascinating! The segregation between scientifically so closely related domains is mind-boggling. Turns out there is a subset of computer science that reinvents a subset of cognitive science. And judging from the list of references they have never heard of each other, which explains the different terms used. Also explains why I never came across any of these interesting sounding papers. This is wild! I now believe in parallel universes.

Konrad Hinsen 2024-05-02 05:42:54

By now I could compile a book listing parallel universes in research. Everyone talks about "interdisciplinary", and yet the dividing lines between disciplines are stronger than ever before.

It looks like we pretty much agree on the importance of context and the limitations of formal reasoning. And my impression is that that's where many disciplines are heading, each at its own pace. It goes well with another slow movement I am seeing towards perspectival realism as a philosophical basis for science.

Konrad Hinsen 2024-05-03 11:07:19

Stefan Lesser Just read your "Meaning-ful Design". The final three points/questions sound very much like Illich's "convivial tools", and that was the starting point for my journey that lead me to my tentative "cognitive surface" concept. Unintellegible automation is a major obstacle to conviviality. BTW, the first of your three questions is roughly the topic of my submission to Onward! Not exactly the same perspective but the same direction of inquiry.

Stefan Lesser 2024-05-03 13:01:56

Konrad Hinsen Thanks for reading and taking the time to comment!

Iā€™m aware of Illich, of course, but havenā€™t (yet) read Tools for Conviviality . What I wrote about in that post is my synthesis of cognitive science research and itā€™s not the first time that common themes surface across relatively separate disciplines. It does look a lot like clever people in different domains keep discovering similar patterns. I ended up here ultimately through George Lakoff (linguistics) and Christopher Alexander (architecture/design theory).

What I began looking into ~5 years ago seemed to me like an earnest interdisciplinary effort between at least psychology, linguistics, anthropology, and philosophy. Thatā€™s how I found my way jumping between different disciplines. There were connections to computer science and AI research too, but Iā€™ve been suspecting those disciplines are much more fragmented since you introduced me to the ā€œ epistemic opacity bubbleā€.

Thereā€™s some irony here, being a discipline that I like to accuse of having scaled complexity through hiding so far that nobody has a complete overview anymore ā€” seems appropriate that the research in that domain is also more fragmentedā€¦

Anyway, Iā€™m looking forward to reading your Onward! submission. Iā€™d love to learn more about your different perspective and I can only think itā€™s wonderful that we come at it from such different origins.

Konrad Hinsen 2024-05-04 05:28:04

I see the link between these converging directions of thought in postmodernism. Modernism is the quest for dominance of humanity over nature through rationality. Postmodernism is the critique of dominance and control. The conflict between the two is the cause of the meaning crisis. What's missing so far is the way out: critique shows problems, but offers no solutions. In a way, this forum is about postmodernism applied to information technology.

Konrad Hinsen 2024-05-04 05:30:09

In my Onward! submission, I take another step back (as a side note in the conclusion), observing that daoism has pointed out millenia ago that the human taste for dominance is a source of problems, and proposed "wuwei", effortless or minimalist action, as the answer.

Stefan Lesser 2024-05-05 13:23:18

If this was a cocktail party, weā€™d be two guys in the corner, having a great conversation, and every now and then a third person comes up, listens for a few seconds, then rolls their eyes and walks away. šŸ˜„

At least that is how it feels to me most of the time. Maybe I havenā€™t been to the right cocktail party yet?

I have read Illichā€™s Tools for Conviviality now and I can see the parallels. Heā€™s influenced by Erich Fromm and my argument is based on Frommā€™s existential modes. Alexander mustā€™ve also been influenced by Illich. Iā€™m happy that my framework integrates well into the larger picture, but I do hope that my conclusions are already a little more specific today, and will be a lot more specific tomorrow. At least for people who wish to create better stuff in this world that is impacted by the issues Fromm, Illich, Alexander, and all the others describe.

Now, how do you see this kind of philosophical discourse; why did you write a paper about this? Is this just because youā€™re personally interested? Was this just a personal challenge? Do you think it will have some impact of some kind?

Iā€™m still struggling with closing the loop from having a robust framework that integrates well with the ideas of bigger picture thinkers to getting software people excited about this. Ironically, I donā€™t think until we present utility and convenience/efficiencies that can be gained from such a different world view or approach to design, few will spend any brain cycles on this. Do you see the same issue, or do you have reason to be more optimistic?

Konrad Hinsen 2024-05-05 18:58:34

There's a place in the software universe for convenience and efficiency, but there is also a place for "power user" technology that takes time to master but empowers its users. Such ideas floated around in the 1960s to 1980s (Iverson, Engelbart, Kay, ...) but were abandoned when software became an industry, with professional developers making products for end users, with epistemic opacity becoming a desirable feature. But the convivial power user systems of the past (Lisp, APL, Smalltalk) are still alive, which is why I am cautiously optimistic. They represent small niches, which makes it hard to evolve them to better meet today's needs.

The angle of attack I am pursuing personally is trying to convince my professional environment, computational science, that industrial software is by construction unsuitable for us. When talking to my colleagues about this, I see a lot of agreement in principle but hardly anyone who believes it can be done. I hope to be able to prove them wrong. Maybe this will not work out, but as long as I am having fun along the way, I don't care!

Assaf 2024-05-02 22:54:52

I'm exploring strategies to enable scientists (biologists in pharma) without computational expertise be able to interact with big data more intuitively. My ultimate goal is to have users ask biological questions, and the system to generate and execute analytical workflows utilizing existing methods from the scientific domain to answer these questions with data visualizations,

I evaluated the non-interpretable and inaccurate "chat your data" LLM solutions. I'm currently thinking about the possibilities of developing/using a DSL as intermediary output prior to code generation to make the process more interpretable. I am also considering what would be the most efficient abstraction strategies of the analytical functionalities/libraries in certain biological domains to improve the accuracy of the outputs (of the higher level strategy and the actual code). I would love to brainstorm about these problems offline/online. Here's my šŸ’¬ #introduce-yourself@2024-05-02T03:05:57.913Z for a bit more context about me.

Jason Morris 2024-05-03 21:52:38

I am once again looking at pages of notes I wrote three years ago attempting to find a way to declaratively diagram concurrent legal processes so as to illuminate the steps available to the parties as the process unfolds. I feel like I have something worth exploring, but to illustrate it I need a diagramming language that allows me to nest nodes inside of one another, and draw edges that originate and terminate at arbitrary depths of nodes. DOT won't let you draw an arrow starting at the edge of a subgraph, and doesn't have any way of nesting actual nodes, for example. Is anyone aware of a text-based graphing language that will let me nest objects and draw edges between arbitrary depths?

Don Abrams 2024-05-04 00:04:15

I believe that fits the statecharts model

If it does, you can draw it with stately.ai

Jason Morris 2024-05-04 00:12:05

Actually, I found a hack! Use subgraphs in DOT, and give each subgraph an invisible node for edges that originate at or target the subgraph. Ugly, but legible, and good enough for my purposes.

Christopher Shank 2024-05-04 02:36:56

Seems like you figured it out!

As a side note that may interest you, Iā€™m working for a little language for the higraph formalism (which stands for hierarchical graphs and is the basis for statecharts, same creator). Not much to show yet, but it sounds like its sort of what your looking for

Original paper here:

dl.acm.org/doi/pdf/10.1145/42411.42414

Jason Morris 2024-05-04 06:52:13

From the paper, it seems that mine is a very similar visual syntax (just with additional labelling of the blobs, and no Cartesian product), and a different semantics. If your language is open, I would love to take a look.I'm also curious if you have seen any examples of higraphs used to express higher-order logical statements.

Jason Morris 2024-05-04 06:54:36

My visual syntax also excludes overlapping bounds.