λove at last!
First posted on 29 July, claimed to have been finalized a few days later, but is still being edited. This post is filed as “In progress.” I am still filling in basic technical knowledge and trying to be receptive to resonating ideas and their interrelations for my book.
The purpose of this updated post is to map out the Edward de Bonian “flowscape” of my thinking as I discovered λ calculus at the heart of computing, especially in Lisp and functional languages. In this post, I “re-presence” the movement of my own thought.
Already, the very first step in this attempt shows how re-presencing, though subsequent to the chronological development of a knowledge domain’s roots, can be essential and critical to the preservation and further development of that knowledge.
If you notice any errors in my thinking, I would really appreciate it if you were to reach out. That is part of my purpose in working with the door open, after Hamming’s advice.
- What is a flowscape
- My flowscape
Background topIn recent times, I have been noticing patterns of recursion everywhere. By patterns, I mean the kinds of “pattern designs” that I have talked about earlier, like in my EmacsConf talk or NLC2022 talk, inspired largely by Richard Gabriel. As I said in the latter talk, I think that prioritizing pattern recognition facilitates their recognition. How did my own pattern recognition begin?
First, when I began to write a book about the general topic of digital culture, I drew on my hermeneutic background to allow for dialogue to unfold between me and an interlocutor. Anecdotally I might add that my life, which is not easy but figuratively rich, continues to prove that taking this approach is worthwhile. Significantly, this approach requires one to be as open as possible to new topics; at the very least, cognizant of potential bias.
As I began to assemble digital artefacts, I found a particular fascination with esoteric programming languages (esolangs). One of my favorite sites is Daniel Temkin’s. I drew a cartoon in my sketchpad many years ago when reading about esolangs that depicts me saying, you can understand if you persist. Why was I so fascinated?
I am not as fascinated by digital issues like privacy or legislation though I do find they are especially thought-provoking when viewed through a cultural-historical lens. In this approach, I draw on Jacques Barzun. What I am immediately fascinated by is Douglas Engelbart’s work to show the creative, intellectual potential of the digital tool.
When the pandemic hit, I was poised to try to do my best with what I had to try to vindicate his approach. I made sites for my courses, drawing on CSS/HTML experience from the aughts and possibly on distant memories of a programming course I took at a high school where nobody wanted to learn, and which I do not name today as a result.
As I embarked on this work, it began to seem strange to me that most of the books about digital culture that I read were written by critics who had limited personal digital praxis. I should note, however, that on last count, there were at least 35 possible names for this field, so it is challenging to survey all of it, especially with limited access to the knowledge gained through professional networking. To add an attempt to learn some programming on top of this exploration, to say nothing of my teaching load and requisite action research, is a lot. But it is fun to vindicate Engelbart, it is fun to read about esolangs, and it is really fun to use Emacs, which I came to when I lost access to an early draft of a manuscript when I switched to a Linux OS and the manuscript file was not compatible. I abandoned the manuscript, trusting that any worthwhile ideas must have been internalized and further concluded that the world was shifting enough to necessitate a new approach. Significantly, using Emacs caused me to think a lot more about the importance of thinking about which digital tools we use and why.
I now write the drafts in Emacs, which is a fun and very powerful but periodically frustrating tool. Still, because Emacs is as fascinating to me as esolangs, I see it everywhere, too. Everywhere, I see its extensibility and expanding core like I see esolangs’ quines . . . It was the latter that prompted me to think about recursion, which led me to think about compilers. I was particularly drawn to Fernando Borretti’s compiler account. While this is beyond my domain, and while I am ever vigilant of dilettantism (it is so tempting to dabble in extraneity with no return on proficiency), something is drawing me onward – even if where I have arrived is just at the beginning of better freshman courses in computer science, as you will see below! This has merit: it ‘proves’ my thinking is in line with actual practice. On a more personal level, this journey continues to reveal a design pattern that becomes incrementally more attractive the more of it I uncover. It also reminds me, again, of how Lisp-y programming works to incrementally extend . . .
How did this chapter of my thought adventure begin? I have periodically been reading higher-level literature that resonates; understandably, however, I lack a grasp of much of the material as it is not my knowledge domain. I look up certain terms that I am not able to retain because I lack the requisite mental model and skip far more. This week, I was reading papers by the team who evangelize Racket, a Lisp language, as an important tool in developing robust computational thinking. I came to Racket because as I go through my bookmarks and order references for the book, I see that I had bookmarked Program By Design (PBD) three times, and neglected to read it. Additionally, a CS professor I admire deeply pointed out in recent correspondence that this is the language he uses with his students. This time, something stuck!
What is a flowscape topEdward de Bono describes flowscaping as a way to map out or display perceptions. I like this because by drawing attention to perceptions it allows for their modification according to reality.
With a Flowscape you simply list a number of elements that you see in the total situation (not necessarily at any one moment in time).
It is this stage of the flowscape that I share below, and mine is chronological. I am currently working on the non-chronological, more deeply relational one, which is in progress. To do this takes more time because it is more deliberate:
Then, for each point on that list, you see to which other point on the list your mind would most readily move. Every point must have one, and only one, arrow leading to another point. A point may receive many arrows but can only emit one arrow. Then you map it out. You may find that points you thought were central are actually peripheral. You may find points that reinforce each other. You get a visual display that allows you to look at the elements in your perception.
Mapped out flowscapes reveal groupings, with more than one possible center. In this re-presentation of thought, there is no hierarchy; the emphasis is on the associational. “The movement from one grouping to another is via Goedel’s Theorem (that logic can never be enough),” de Bono explains.
There is a need for this kind of associational thinking lest we become like the Casaubon described in George Elliot’s Middlemarch: the scholar who devoted his entire life to content that was essentially meaningless.
To return to the design pattern thinking of Christopher Alexander and Richard Gabriel, to say nothing of the extensions of this work in other domains like networked learning, the pattern is at once locally relevant, a good design strategy, and abstractly powerful. Creating work that does not correspond meaningfully to a pattern could be like Casaubon, who is an interesting example, because ostensibly he was seeking types.
Why do we want to map out our thought and be cognizant of the connections we are making? De Bono gives the answer in simple language:
Logic is not enough. Perception is very important. Indeed, in daily life perception is more important than logic. Yet we have done nothing about perception. . . .
For a final example, in an experiment, students were shown still photographs of two candidates who had run against each other in some election. No names or party affiliations were given. The students were asked to guess which of the two had won the election. The students were correct 70 per cent of the time. What are the implications of this?
Perhaps the perceptions of the students were so good that they could see confidence, ability and responsibility just from the still picture of a face.
Perhaps the students persuaded themselves that they could see these things but in the end chose what they thought the voters would have chosen.Perhaps democracy has reached a point where physical appearance matters more than experience and ability.
My flowscape top
This amazing chapter in my thoughtflow journey began through reading one of PBD’s members, Shriram Krishnamurthi’s papers, specifically, his Papers We Love talk. In all of the PBD papers, I noted a pedagogical approach that is very similar to mine, but this talk by Krishnamurthi is the one that not only helped me see why, but also explained my attraction to turtles, I mean, recursion and compilers.
What brings together recursion, compilers, quines, esolangs, Lisp languages – so also Emacs? Lambda calculus. It is at the root at all of them. I discovered that which most good computer science or engineering students know by their freshman year, if not long before then. I also realized the full meaning of the a “Y combinator” extension, Hacker News. But most significantly, this led me to fall in love with lambda.
Lambda calculus explains my love of recursion, it explains my fascination with compilers, it explains my love of esolangs – after all, they are Turing Tarpits, but now they have a place in the system of things. Lambda, also the symbol of the more-meta programming language theory, seems to me as proof of Herbert A. Simon’s claim in The Sciences of the Artificial that there is no such thing as complexity, only a lack of a reductive model. We remember, though, that reductive models are more systematic, and do not explain things like emergence. And it is exactly this that I was trying to articulate as elegantly in my approach to teaching culture. What we see in programming illustrates why this point needs to be stated elegantly, to have always active in one’s awareness. Because, it seems to me at least at this moment, the problems of programming security are illustrations of the non-systematic. That is, relative to the more systematic, hierarchical computation that makes the Turing machine possible.
I am thinking that the romance of lambda, which is just so beautiful you want to look at it all day, and contemplate it, can detract from non-systematic thinking. In the mean time, the difference between 0.999 and 1 (to attempt to reference Krishnamurthi) can be exploited. Here I am talking about security. Put another way, playing within the limits of the Turing Tarpit is at once an extremely fun challenge as demonstrated by some really fascinating esolangs, but it is a challenge that is not for the children that Plato is talking to in The Republic. (Here, I am referencing the famous passage that most people misinterpret because they fail to see that those Plato addresses, which includes all of us, are being compared to children – if we fail to understand the message!)
Some concepts are more fruitful because they are closer to the essence of a universal truth, if I may at once paraphrase and draw on Plato and Aristotle. I am possibly waxing philosophical here in the worst way, but I truly wonder if there is something essential about functional programming, which draws on lambda calculus. I am also curious to re-read Plato with lamda calculus in mind.
To return to the flowscape, essential ideas are rarely the first to come to mind when considering subject matter. This post itself was deliberately written to draw attention to the difference between the chronological flow of thought and a flowscape level, which is subsequent.
Being first does not equate arriving at the roots of an idea, though it can mean knowing to point to it. Maybe Krishnamurthi’s 0.999 vs. 1 is the difference between those who know enough to take the vantage point of reflection, of hermeneutic distanciation and those who do not. In some contexts, they could be equivalent, but they are not the same.
These thoughts bring productive interpretation to understanding what Edgar Morin describes as “technoscience” in La méthode – tome 6. He defines it as the intertwining of machine, science, and technique that are productive of both elucidation and knowledge as well as ignorance and blindness. This tells us something about how risky knowledge work is. It also indirectly confirms that the successful work will be like λ ; capable of extending upon more and more within it. It is a generative model, one that I see in the vision of the founding fathers of the United States of America. One that can exist theoretically but is so hard to achieve in practice.
A landed interest, a manufacturing interest, a mercantile interest, a moneyed interest, with many lesser interests, grow up of necessity in civilized nations, and divide them into different classes, actuated by different sentiments and views. The regulation of these various and interfering interests forms the principal task of modern legislation, and involves the spirit of party and faction in the necessary and ordinary operations of the government. — James Madison, Federalist No. 10
Of course, that statement was nested in other statements, like the Term of the Senate, which points to the relevance of a Lisp-y flowscape mindset . . .
Special thanks to the Emacs and PlantUML developers, maintainers, contributors, and community. Also, with much gratitude for the PBD initiative and to Fernando Borretti.
- In progress