Summary: "The Tao Of Programming"
> [new:DavidCary:2009-06-28 22:57 UTC]
> ''@BayleShanks: "... designing, not the user experience, but the programming language around some weird metaphysical system. ... "''
> Are you referring to "The Tao Of Programming"?
> In particular:
> Prince Wang's programmer was coding software. His fingers danced upon the keyboard. The program compiled without an error message, and the program ran like a gentle wind.
> "Excellent!" the Prince exclaimed, "Your technique is faultless!"
> "Technique?" said the programmer turning from his terminal, "What I follow is Tao - beyond all techniques! When I first began to program I would see before me the whole problem in one mass. After three years I no longer saw this mass. Instead, I used subroutines. But now I see nothing. My whole being exists in a formless void. My senses are idle. My spirit, free to work without plan, follows its own instinct. In short, my program writes itself. True, sometimes there are difficult problems. I see them coming, I slow down, I watch silently. Then I change a single line of code and the difficulties vanish like puffs of idle smoke. I then compile the program. I sit still and let the joy of the work fill my being. I close my eyes for a moment and then log off."
> Prince Wang said, "Would that all of my programmers were as wise!"
> -- [http://huffman.sourceforge.net/tao/tao-of-programming.html "The Tao Of Programming"]
Buildings are made in a modern functionalist style, today. But there are other philosophies for making buildings. To challenge functionalism, you could ask yourself: “What if I wrote software on a metaphysical basis?”
This crazy idea is perhaps best introduced this way:
In architecture, there are different ways of building things. They’re generally “pretty good” at holding walls and floors and roofs up, and adding support for doors and windows. The basic elements of a building are similar everywhere.
But there are different philosophies about how a building should be made, what it should look like. Why is that? Buildings affect us: They change the way we think, the way we feel. Architecture is art. Churches look different than warehouses, warehouses are not office buildings, etc.
Read the Wikipedia article on Functionalism, the architecture. This describes the dominant paradigm today.
Is it also how we build software? Think about the language around user interface discussions. And think of the abstract terminology we use to architect software. I think that it’s “functionalism.”
So let’s consider something different, just for fun.
The algorithm is as follows:
When construction is not tied to merely functional demands, for instance like those involved in house building and urbanism, architectural work can assume a value that touches the meaningful aspects of human existence. Spirituality, Philosophy, Science, contact with the Divine and interaction with other planes of reality can all be explored within the design. – Federation of Damanhur - Magic and Architecture
And by write the piece of software on it’s basis, I mean:
That is: writing, understanding, and using the program – should require an understanding of whatever (random) metaphysical grounds it is that you chose.
When there is a tension between “what is convenient” (as far as the programming goes) and “what is metaphysically correct,” choose what is metaphysically correct, by the model. Exceptions that must be made should be done so in accordance with the metaphysical model, and should be accompanied with some sort of explanatory mythology. Better yet, would be to see deeper into the metaphysics, to find the better fit with the software.
The theory is that: If you do this, you may cause yourself to think in new ways, that you may cause others to think in new ways, and we may discover some new things.
On my way back from RecentChangesCamp, I asked myself: “How would you do this?” I quickly sketched out an idea for a home use e-mail client.
I wanted a simple metaphysical model, so I chose the four elements: Earth, Air, Water, and Fire. 1 I could have chosen the I Ching (more complicated, 8 elements) or the Kaballah (much more complicated,) but I chose the four elements because they were simple. 2
Then I asked: “How do I make software out of this?”
I have thought mostly of the user interface, but here’s what I came up with.
Now, I’ll admit it: This goes contrary to everything that modern UserInterface theory tells us important. This is not fast, this is not quick, it does not place the world at our fingertips.
Power computer users would probably skip right by this whole thing.
But, I’m willing to gamble: I think there would be a significant portion of, say, pagans, who are perhaps uncomfortable about computers period, who might actually feel somewhat comfortable with this arrangement.
It is, after all, a common complaint: “Kids and computers, these days. Fast fast fast, me me me. Ain’t got no respect.” Right? It’s comical, yes? But perhaps they would feel more comfortable with this sort of software. It sort of renegotiates the whole “here’s the software, here’s what I intend for it.”
Perhaps pagans, Buddhists, perhaps different groups: Perhaps they would like this sort of thing.
Let’s take a brief inventory of some of our ideas:
So these are some things to think of, in the back of your mind, as you consider this idea.
Now, the software: How you use it, once the program is running.
When the program starts, the user wants to receive their mail. To do that, they go into the fire world. I’m not going to say a whole lot about the particulars of the user interface, it’s more the arrangement and the basic idea that is important. In the fire world, you direct the salamander (somehow) to an IMAP or POP3 mail server. The server can be depicted as some sort of bonfire. The salamander goes in, gets the message, and you see it shoot out of the bonfire as a spark. The more mail you get, the more sparks come out of the fire. Bigger mail, longer mail– bigger spark. The sparks fly up into the sky, because that’s where you’re going to go to read it, and interact with it.
It’s conceivable that there may be a sort of “toss, keep, toss, keep, toss, keep” system here. Perhaps as the messages arrive, you can let it continue up into the air, or smash it out into ash. (Spam.) Your spam gating stuff would happen here, as well. You can’t actually reply to the mail here, because that’s a task for when you’re in the air.
I know that this may be awefully inconvenient, but rules are rules. You didn’t think that this was all about the user, did you? This is actually a give & take, now. The salamander has feelings too, you know.
Now, when you’re done, you click on the picture of the globe, with the four elements around it, and it takes you back to the center screen.
Now you click into the air. You are greeted by the angels, and they unroll the scrolls with the messages that you have chosen to keep on them. You can respond to messages here, which are written in the air. Use some sort of tagging system for reinvoking messages that you’ve seen before, or want to remember later. The messages you write are collected on the right side of the screen.
Now to send them, you have to go back to the main screen (by clicking on the globe,) and then clicking on the water. Because water is where you send.
The first time you are there, you need to set your smtp server, which is set here. When you do that, you can see a river here, that your small creek merges into. When you hit the send button here, the messages light up, and become lights on the water. As they are sent out, the merge into the river and float away. Size is proportionate here, as well.
I want to note some things here:
I can’t prove that any of these things are actually true. I’ve never done this, and I’m not aware of any research like this, and perhaps this is all just a bunch of silly nonsense.
But that said, it does jive with things people have been telling me. “It’s too fast.” “I’m feeling like nobody’s listening to anybody, that we’re all just talking.” “Me, me, me.” “Tech’s are selfish.” “I’d like things to go slower.” Perhaps there really are some things to these claims, and perhaps we can (should?) renegotiate our relationship with machines.
Now, I’m a tech, and I absolutely love software that is immediately responsive. I understand that this software should never be used in a business environment, and I understand that I need tools to be as precise and as closely available as possible.
But look, this is not that. We’re talking about home, not the shop. One person had a phrase: “AppropriateTechnology.” Appropriate to the constraints of the material (bandwidth, RAM, hertz,) to the constraints of the environment, and to the nature of the culture. (At least, that’s what I think he meant.)
So, perhaps people will have a more natural, more harmoneous, more friendly experience of computers and technology, if the technology was made to fit their understanding of the world, their metaphysics, their perspective on life.
I mean: Imagine someone who’s using this mail client.
Imagine that this person gets a flame mail.
Is the user going to respond with a flame in turn?
If the person just went through a personal meditation, ritual, contemplation of the Earth and the satellites and so on- are they going to be more or less likely to respond to a flame in turn? (Compared with someone who’s using traditional corporate software?)
Think about that. What are the SocialAffordances of this sort of technology?
This could be really interesting, no?
So, if we make software different, perhaps on metaphysical lines, then perhaps it will cause us to re-think our relationship with machines, and our relationship with ourselves, and our relationship with others.
If machines are truely becoming a part of ourselves, (and I do believe that they are,) then it makes sense to think about this sort of thing.
In our study of GeekHealth, we can see some things that the Internet does to us that can be kind of “funny.” We can stay up too late. We can eat poorly. Perhaps there are ways that our software can help us mitigate this.
I invite a look at a few things:
Finally, I want to say: This is not to say that one culture’s better than another, or anything like this. This is simply to sharpen our sensibilities, to see things a little differently, and understand how software might be really different, depending on where it is, depending on what culture it’s “blended” for, depending on what we want to do with it, and so on.
ShawnKilburn brought up that the “priority” in e-mail, which is very used, could become an essential part of the system. Messages could be brought to you from the angels, by way of priority. And when you send a message, priority could be given prominance. “What’s the priority of this message” might be the first prompting.
But instead of doing it by “high, medium, or low priority,” it might be: “meaningful, important messages” vs. “correspondance” vs. “idle chatter.”
Further, I made a list of some of the assumptions that software done this way shatters:
Another idea I had, that would be fun, is like in Katamari Damancy: Make it so that if you hold down the control key, or other “power keys,” (just for fun, playing a joke with experienced users) that the presently technically literate know about, then have it do fun things like making star glitter come out of the mouse, or make animated unicorns come out to play (Ctrl-F4?), and so on. Nah, scratch that- Ctrl-F4 is too important. But I’m sure there are other keys that can be hijacked for bemusement.
I need to find that paper that distinguishes “hard” from “soft” technology, (the use of which is similar to HardSecurity vs. SoftSecurity,) and describes further “blended technology” (technology made for a particular culture,) and “appropriate technology” (accounting for constraints, environmental constraints, purposes, and culture.)
There weren’t any examples about “how to do an email client,” or any other software, for that matter – that was my own construction.
I got the paper at the EvolutionarySalon. One guy, I think his name was Michael but I’m not sure, walked straight up to me, and said: “Lion, I’ve got a paper, and you have to read it.” I said, “yah, yah, okay, later, I’m really busy,” but he made sure that I got the paper somehow. I was reading it in the bus, and I was pretty critical of it. But I kept thinking about it, putting together a reply, and then I think I got it. (And, this is the product.)
I still haven’t written back to him; I really need to.
At the Wiki meeting, I got to see Jair some more, and he showed me Imaginify, and other things he was working on. That got me thinking more about IntegratingImagination?, and the metaphysical side of things.
So, that’s how those two gatherings prompted this sort of thinking.
Pretty neat I don’t have much time (I must sleep) but I’ll drop a couple of comments:
But yeah, that’s pretty damn interesting. Can make you think in new ways. Who here will actually */implement* that system ?
The e-mail client is just an example.
The main thing is to convey the idea.
Once you see the idea, you can apply it to any project.
Speaking for myself, just the realization of the idea alone has deeply changed how I think a software architecture can work, and what kinds of possibilities there are for software.
One interesting thing: Suppose someone wrote software, (perhaps a language and compiler and editor,) on the metaphysical basis of the Kaballah. It’s very complicated, I’m sure there’s some way of mapping it onto software construction.
Now your software, your documentation, and even your code is entirely wrapped up in the Kaballah.
Is this software that a conservative Christian could use? Would use? Because to change it, to modify the source- you keep being confronted with this foreign ontology. You can’t just redress it, because you’re still confounded with the sephiroths, the geometry of the sephiroths. And you can’t just reorder the code, because that’s basically removing the whole structure, and all the program basically is is structure. You have to completely rewrite the program in order to translate it to another ontology.
Isn’t that interesting?
I’m not saying it is desirable. I do think that it is interesting, and I think there’s something telling there.
I believe that, even in the “functionalist” domain of modern software development, it’s conceivable to radically reshape how we perform building, linking, relocating, etc., etc., etc.,. And I don’t know that we can say that the way we’re doing it right now is “best.” I’m not event confident it’s “appropriate” (appropriated) to modern conditions; There are a number of ways to radically reconceive things in positive ways.
And yes, you’re right: It doesn’t have to be “metaphysical” as in “the occult bookstore.” You could take an anime series, or a game series, or a pattern you see on a wall, or a musical sequence, or anything. I just picked “metaphysics” for fun, but it can be any worldview.
I love the idea and will have to give it some more thought!
The stuff that attracts me: Using a totally different metaphor to translate the technical details to a humane process. Communication is something we do every day. Talking to each other is constrained by our physical environment: Our faces, our clothes, the rooms, the light, the sounds around us. In Email, programmers get to build all those things that affect our Email experience. We can choose the metaphor of letter writing. Or of a cramped desktop. Or a weird “abstract list of subjects in chronological order” mixed with a “simulation of a rolodex with contact info”. And maybe that’s not a very useful metaphor.
So why not look in mystic experience for inspiration? After all, mystic rituals are designed to affect our ways of thinking. They go deep, without any obvious external design constraints: A church has much more freedom to choose the rituals, the liturgy, the interactions, compared to a farmer, and a farmer still has more freedom than a secretary in an office.
So why not use a salamander to get rid of spam, why not expect news from pigeons coming to us from the sky? Why not send our mails as bottles down the river. Why not derive strength from the mass of archives down under the earth. Why not design search as a cave exploration or summoning rituals.
I like it.
Just thought I’d throw this in, because Lion and I talked about it on the busride and I didn’t see it represented in the above writeup… For me, the question “is this software that a conservative Christian could/would use?” is asking the wrong question. The important question to my mind: “is this software that a spiritual person would want to use? that would aid them in their life of contemplation?” Part of the reason that computers seem so non-spiritual to people is that they don’t allow for very much in the way of customization, apart from the most superficial of modifications, like changing the picture on the computer desktop. (If there are open source windowing environments that allow more fluidity here, I’m not aware of them.)
I think the creation of software that allows for moments of contemplation and beauty is going in the right direction, but what I’d like to see are tools that allow people to customize these contemplative software applications. I see the structure of the thing as a separate issue. Like I said to Lion (I recollect saying), mapping a new cosmologic/symbolic system, whether it’s Christian, Buddhist or Anime, onto four points isn’t that difficult. (I’m deliberately stepping away from the Kabbalah here, because I think it muddies the point I’m trying to make.) I think it’s important for any “metaphysical” software to allow its users to map their own metaphysical meaning onto it.
For example, suppose I begin using Lion’s groovy metaphysical email program, but the four elements aren’t very meaningful to me. Or the four elements as represented by their images in the program, just aren’t very meaningful to me. Perhaps I find them aesthetically jarring for whatever reason. Now suppose that this program allows the user to replace any image in the system with any other image. Suddenly we have a reason for people to engage with their software on a deeper level, not just through the being of a user. Now, in some sense, the user becomes the designer of her own experience. Not only that, but this process would engage people on an artistic level. This functionality (or architecture) of fluidity would allow me to replace one set of images with any other set; to create my own virtual meaning space, rather than having one handed down from on high… so to speak.
Actually, I really am, personally, interested of this space of “metaphysically architected code.”
My interest (here) is not in the universal: “Anybody can use this to make anything.” I feel that the natural extension of the idea you’re following, is “more powerful, more intuitive, programming languages and art tools.” While that is an interest of mine, that’s not the interest that I’m exploring right now. That’s a universalist idea (anyone, anything.)
Perhaps when programming and art are super-easy, we’ll have this “individualist’s e-mail.” Sort of like desktop backgrounds are today: It’s easy to customize, people have the interest, and they do it.
Until we have those super-easy programming languages and super-easy art environments, though, we have: “Hard to write e-mail programs.” Regardless of what we do, there will probably always be “hard to write programs.” And I suspect that communities of people will always delegate to a few, by some mechanism (market or plan,) for the few to construct the program.
This is a “from on high” model, though I’m not sure about “high” vs. “low.” Rather: some group. The reason you get something from afar, rather than making it yourself, is because it was hard to make.
We all want religions to get along with one another, and we all want them to communicate with one another, etc., etc.,. These universalist aims. But I am talking now for the individual groups, and their personal egos. And I think that there’s a space for them to have their own (say) email programs.
In the programming community, we’ve been moving from customizability (as a goal) to “opinionated.” This doesn’t mean force, because there are a variety of OpinionatedSoftware? out there. With so many “opinions,” you just pull the software that meets your opinions. The standardization, lack of variation, makes it easier to develop extensions, to understand the code, to communicate the technique, etc., etc.,.
We had a “customization” crisis, of sorts, because everyone wanted everything to be infinitely customizable to allow for just about anything, and software really sped up, once we started going: “Oh, let’s make invariance a feature, rather than variance.” I suspect this is a thing like eating food, or learning ideas: Open, Close, Open, Close, Open, Close, etc., etc.,.
Right now, in the software world, we are in “close.” (It seems to me.) Within a few years, we will probably be in “open” mode again.
So much to think about here…
This email client is a cool idea.
Yes, at the moment people seem convinced that the software should be set up The Right Way (by some user interface expert), rather than cluttering it with tons of customization options. I thought C2 had a discussion on that, but the closest I can find at the moment is Wiki:MultipleSkins. Perhaps I’m mis-remembering something from Donald Norman or First Principles of Interaction Design.
I suspect quite a few Christian computer users select the “penguin” or “pufferfish” operating system, going out of their way to avoid “that little pitchfork guy” operating system.
On the other hand, I’ve seen some people arbitrarily change things when they sounded "too Biblical".
You could totally make a Christian email client.
But I don’t think Knuth would like it! His goal is to avoid receiving messages, period. And he’s got ArtificialArtificialIntelligence? working for him. (That is, he’s hired a secretary.)
The part of the idea I was most interested in was designing, not the user experience, but the programming language around some weird metaphysical system. I think these are each such big topics that they may as well have separate wiki pages.
If you all haven’t read it, you should really check out "Umberto Eco's book Foucault's Pendulum". The characters in the book create a computer system which generates answers to occult/metaphysical questions randomly, based upon all of the fictitious/apocryphal information that they enter into it. This book relates more to what Bayle and Lion are discussing and less about my own little idea (which should probably go sit in its own little corner somewhere…)
I thought all of you were just pulling my leg. But it seems that Mark Bernstein took you seriously, and is starting to promote "NeoVictorian Computing".
I could mention "Magic Boxes, Canned Chaos and Creative Totems", but that seems to be drifting off topic …
Neat! I found myself on the "Postmodern Programming" PDF, linked from the New-Victorian blog, and read this funny quote:
I’ve been researching DamanHur, and I have to say, “I’m really impressed.” On the surface, there’s their underground caverns. Which are just shockingly beautiful.
But beneath– there is their society, which is utterly bizarre, but incredibly amazing as well.
…which is part of a larger collection of papers, …
…which includes pages such as:
These people are totally fruit loops, but, … …their lives make an incredible amount of sense.
The person is taken to the psychiatric ward, and the doctor asks, “What’s wrong?” And they say, “Well, John thinks he’s a chicken.” The doctor says, “Well, I guess we can accept him in our ward.” But then the people freak out. “We can’t do that – we need the eggs!”
Maybe relevant : http://www.nooranch.com/synaesmedia/wiki/wiki.cgi?TextAsAFlower
Yes! It’s beautiful!
I think that saying, “Well, what’s the problem we’re really trying to solve,” and so on, works great – to a point.
But I think there’s another world, where we just ask ourselves, “What do I want it to do? How do I want to live in it? What is my subjective experience of it?”
And then throw all caution and reason to the wind, and just make that thing.
If someone says, “I want text as a flower, and I don’t even know what that means,” then by golly, that’s your problem statement, and you just go and figure out how to make text as a flower.
TeilhardDeChardin said, “Great truths are felt before they are expressed.”
Not related to coding, but to marriage of technology and ritual, beer made by monks: http://www.churchofthecustomer.com/blog/2007/11/thou-shalt-embr.html
@BayleShanks: “… designing, not the user experience, but the programming language around some weird metaphysical system. … “
Are you referring to “The Tao Of Programming”? In particular:
Prince Wang’s programmer was coding software. His fingers danced upon the keyboard. The program compiled without an error message, and the program ran like a gentle wind.
“Excellent!” the Prince exclaimed, “Your technique is faultless!”
“Technique?” said the programmer turning from his terminal, “What I follow is Tao - beyond all techniques! When I first began to program I would see before me the whole problem in one mass. After three years I no longer saw this mass. Instead, I used subroutines. But now I see nothing. My whole being exists in a formless void. My senses are idle. My spirit, free to work without plan, follows its own instinct. In short, my program writes itself. True, sometimes there are difficult problems. I see them coming, I slow down, I watch silently. Then I change a single line of code and the difficulties vanish like puffs of idle smoke. I then compile the program. I sit still and let the joy of the work fill my being. I close my eyes for a moment and then log off.”
Prince Wang said, “Would that all of my programmers were as wise!”