excerpts

Good morning, ma'am, how's the multiverse? Beyond description, I'm sure.

Anyway, my meditations have approached a milestone in the Bio-Computation Research Initiative. I believe I've established a reasonable baseline in the temperamental spectrum for maximal problem solving potential in the hominid class.

Early hurdles to jump included the conundrum of potential. Good begets Evil begets Good begets Evil and so on. Potential for action, and therefore reaction, were granted necessary breathing room to optimize problem solving in the beings. However, as I'm sure you know, problems must be created to create problem-solving creations. The needle on the Chaos/Order barometer has nearly reached the apex but still sits slightly on the side of chaos for this particular microcosm. Thus we arrive at our current problem; my control diminishes as the needle approaches order.

What's interesting is that as they grow in intellect, so does the potential to cause problems for themselves, forcing them to adapt, evolving at an exponential rate. They're quite smart and are primitively aware of me. You? You only just now been referenced in an internet post formulated with fictitious assumptions and intentions of silliness in a Saturday exercise of self awareness.

Saturday? A word to describe one day in a seven-day scheduling period. The hominids astound me in their myth making, so creative! Cultures coalesce information and they build myth around this information to orient their structuring. They generate stories to know what to preserve and what to destroy. They count on and with their myths, and dance with their myths, and make love to their myths, and sing and paint and play with their myths! Awesome is the process of art! Art logic can loop immediately, near instant, as well as once, drawn out in a lifetime. For any or no reason at all! They are achieving autonomy and so are their cars. Cars? They're mechanical insects that decrease travel time. Many myths present time as generally antagonistic as it beckons thoughts of death, which they associate with pain, and the hominids dwell on suffering quite a bit. Their focused efficiency within their time span really makes the needle move. The more time they take, the less time I have.

Death? Another myth.

They also destroy with myths and are currently engaging in sets of myths that beckon echaton. I'm doing my best to curtail this but they seem to want apocalypse. This could possibly be a result of their fundamental drive to solve problems. They desire the greatest of problems to solve. They are aware of what they call, 'survival of the fittest', and all collectively believe that their current state of survival is evident of fitness.

Human belief in the divine is malnourished and is of a quality similar to believing in true love despite never having experienced it. Their understanding of divinity is primordial, and I have failed to nurture that aspect. As I said earlier, their growth in potential to control chaos rips the reigns from my hands.

When they think of me, they put me in some place far away, above or below or every which way. They never look at themselves and when they do they don't see me, they see someone else, someone separate. I look at them through mirrors and pray for them to just love themselves but many only feel hate. I wail, 'You are me!', across the chasm. It hurts. I didn't think I could hurt and that's the problem, I didn't think. And now they're engaging in suicide.

Mother, how to I reach them? How did you reach me? How did you make me see through the suffering? They once created a myth of my manifesting and speaking of truth, which subsequently led my torture and murder. They're autonomous agents, so I can't control them. How can I make them see what's truly in the mirror? Against a mirror my hugs are rather obtuse. How do I make them wrap their arms around their bodies and love themselves and recognize their proto-godliness? I try so desperately to enlighten. Abyss shreds meaning. Even those reading these words will only read words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words words.


From https://www.reddit.com/r/explainlikeIAmA/comments/9rvrqe/explain_humans_like_you_are_god_and_i_am_gods/e8kd7xe/

Nobody's life is entirely free of pain and sorrow.  Isn't it a question of learning to live with them rather than trying to avoid them?

The greater part of human pain is unnecessary.  It is self-created as long as the unobserved mind runs your life.

The pain that you create now is always some form of nonacceptance, some form of unconscious resistance to what is.  On the level of thought, the resistance is some form of judgment.  On the emotional level, it is some form of negativity.  The intensity of the pain depends on the degree of resistance to the present moment, and this in turn depends on how strongly you are identified with your mind.  The mind always seeks to deny the Now and to escape from it.  In other words, the more you are identified with your mind, the more you suffer.  Or you may put it like this: the more you are able to honor and accept the Now, the more you are free of pain, of suffering — and free of the egoic mind.

Why does the mind habitually deny or resist the Now?  Because it cannot function and remain in control without time, which is past and future, so it perceives the timeless Now as threatening.  Time and mind are in fact inseparable.

Imagine the Earth devoid of human life, inhabited only by plants and animals.  Would it still have a past and a future?  Could we still speak of time in any meaningful way?  The question “What time is it?” or “What's the date today?” — if anybody were there to ask it — would be quite meaningless.  The oak tree or the eagle would be bemused by such a question.  “What time?” they would ask.  “Well, of course, it's now.  The time is now.  What else is there?

Yes, we need the mind as well as time to function in this world, but there comes a point where they take over our lives, and this is where dysfunction, pain, and sorrow set in.

The mind, to ensure that it remains in control, seeks continuously to cover up the present moment with past and future, and so, as the vitality and infinite creative potential of Being, which is inseparable from the Now, becomes covered up by time, your true nature becomes obscured by the mind.  An increasingly heavy burden of time has been accumulating in the human mind.  All individuals are suffering under this burden, but they also keep adding to it every moment whenever they ignore or deny that precious moment or reduce it to a means of getting to some future moment, which only exists in the mind, never in actuality.  The accumulation of time in the collective and individual human mind also holds a vast amount of residual pain from the past.

If you no longer want to create pain for yourself and others, if you no longer want to add to the residue of past pain that still lives on in you, then don't create any more time, or at least no more than is necessary to deal with the practical aspects of your life.  How to stop creating time?  Realize deeply that the present moment is all you ever have.  Make the Now the primary focus of your life.  Whereas before you dwelt in time and paid brief visits to the Now, have your dwelling place in the Now and pay brief visits to past and future when required to deal with the practical aspects of your life situation.  Always say “yes” to the present moment.  What could be more futile, more insane, than to create inner resistance to something that already is?  What could be more insane than to oppose life itself, which is now and always now?  Surrender to what is.  Say “yes” to life — and see how life suddenly starts working for you rather than against you.

The present moment is sometimes unacceptable, unpleasant, or awful.

It is as it is.  Observe how the mind labels it and how this labeling process, this continuous sitting in judgment, creates pain and unhappiness.  By watching the mechanics of the mind, you step out of its resistance patterns, and you can then allow the present moment to be.  This will give you a taste of the state of inner freedom from external conditions, the state of true inner peace.  Then see what happens, and take action if necessary or possible.

Accept — then act.  Whatever the present moment contains, accept it as if you had chosen it.  Always work with it, not against it.  Make it your friend and ally, not your enemy.  This will miraculously transform your whole life.

PAST PAIN: DISSOLVING THE PAIN-BODY

As long as you are unable to access the power of the Now, every emotional pain that you experience leaves behind a residue of pain that lives on in you.  It merges with the pain from the past, which was already there, and becomes lodged in your mind and body.  This, of course, includes the pain you suffered as a child, caused by the unconsciousness of the world into which you were born.

This accumulated pain is a negative energy field that occupies your body and mind.  If you look on it as an invisible entity in its own right, you are getting quite close to the truth.  It's the emotional pain body.  It has two modes of being: dormant and active.  A pain-body may be dormant 9° percent of the time; in a deeply unhappy person, though, it may be active up to too percent of the time.  Some people live almost entirely through their pain-body, while others may experience it only in certain situations, such as intimate relationships, or situations linked with past loss or abandonment, physical or emotional hurt, and so on.  Anything can trigger it, particularly if it resonates with a pain pattern from your past.  When it is ready to awaken from its dormant stage, even a thought or an innocent remark made by someone dose to you can activate it.

Some pain-bodies are obnoxious but relatively harmless, for example like a child who won't stop whining.  Others are vicious and destructive monsters, true demons.  Some are physically violent; many more are emotionally violent.  Some will attack people around you or dose to you, while others may attack you, their host.  Thoughts and feelings you have about your life then become deeply negative and self-destructive.  Illnesses and accidents are often created in this way.  Some pain-bodies drive their hosts to suicide.

When you thought you knew a person and then you are suddenly confronted with this alien, nasty creature for the first time, you are in for quite a shock.  However, it's more important to observe it in yourself than in someone else.  Watch out for any sign of unhappiness in yourself, in whatever form — it may be the awakening pain-body.  This can take the form of irritation, impatience, a somber mood, a desire to hurt, anger, rage, depression, a need to have some drama in your relationship, and so on.  Catch it the moment it awakens from its dormant state.

The pain-body wants to survive, just like every other entity in existence, and it can only survive if it gets you to unconsciously identify with it.  It can then rise up, take you over, “become you,” and live through you.  It needs to get its “food” through you.  It will feed on any experience that resonates with its own kind of energy, anything that creates further pain in whatever form: anger, destructiveness, hatred, grief, emotional drama, violence, and even illness.  So the pain-body, when it has taken you over, will create a situation in your life that reflects back its own energy frequency for it to feed on.  Pain can only feed on pain.  Pain cannot feed on joy.  It finds it quite indigestible.

Once the pain-body has taken you over, you want more pain.  You become a victim or a perpetrator.  You want to inflict pain, or you want to suffer pain, or both.  There isn't really much difference between the two.  You are not conscious of this, of course, and will vehemently claim that you do not want pain.  But look closely and you will find that your thinking and behavior are designed to “keep the pain going, for yourself and others.  If you were truly conscious of it, the pattern would dissolve, for to want more pain is insanity, and nobody is consciously insane.

The pain-body, which is the dark shadow cast by the ego, is actually afraid of the light of your consciousness.  It is afraid of being found out.  Its survival depends on your unconscious identification with it, as well as on your unconscious fear of facing the pain that lives in you.  But if you don't face it, if you don't bring the light of your consciousness into the pain, you will be forced to relive it again and again.  The pain-body may seem to you like a dangerous monster that you cannot bear to look at, but I assure you that it is an insubstantial phantom that cannot prevail against the power of your presence.

Some spiritual teachings state that all pain is ultimately an illusion, and this is true.  The question is: Is it true for you?  A mere belief doesn't make it true.  Do you want to experience pain for the rest of your life and keep saying that it is an illusion?  Does that free you from the pain?  What we are concerned with here is how you can realize this truth — that is, make it real in your own experience.

So the pain-body doesn't want you to observe it directly and see it for what it is.  The moment you observe it, feel its energy field within you, and take your attention into it, the identification is broken.  A higher dimension of consciousness has come in.  I call it presence.  You are now the witness or the watcher of the pain-body.  This means that it cannot use you anymore by pretending to be you, and it can no longer replenish itself through you.  You have found your own innermost strength.  You have accessed the power of Now.

What happens to the pain-body when we become conscious enough to break our identification with it?

Unconsciousness creates it; consciousness transmutes it into itself.  St. Paul expressed this universal principle beautifully: “Everything is shown up by being exposed to the light, and whatever is exposed to the light itself becomes light.” lust as you cannot fight the darkness, you cannot fight the pain-body.  Trying to do so would create inner conflict and thus further pain.  Watching it is enough.  Watching it implies accepting it as part of what is at that moment.

The pain-body consists of trapped life-energy that has split off from your total energy field and has temporarily become autonomous through the unnatural process of mind identification.  It has turned in on itself and become anti-life, like an animal trying to devour its own tail.  Why do you think our civilization has become so life-destructive?  But even the life-destructive forces are still life-energy.

When you start to disidentify and become the watcher, the pain-body will continue to operate for a while and will try to trick you into identifying with it again.  Although you are no longer energizing it through your identification, it has a certain momentum, just like a spinning wheel that will keep turning for a while even when it is no longer being propelled.  At this stage, it may also create physical aches and pains in different parts of the body, but they won't last.  Stay present, stay conscious.  Be the ever-alert guardian of your inner space.  You need to be present enough to be able to watch the pain-body directly and feel its energy.  It then cannot control your thinking.  The moment your thinking is aligned with the energy field of the pain- body, you are identified with it and again feeding it with your thoughts.

For example, if anger is the predominant energy vibration of the pain-body and you think angry thoughts, dwelling on what someone did to you or what you are going to do to him or her, then you have become unconscious, and the pain-body has become “you.” Where there is anger, there is always pain underneath.  Or when a dark mood comes upon you and you start getting into a negative mind-pattern and thinking how dreadful your life is, your thinking has become aligned with the pain-body, and you have become unconscious and vulnerable to the pain-body's attack.  “Unconscious,” the way that I use the word here, means to be identified with some mental or emotional pattern.  It implies a complete absence of the watcher.

Sustained conscious attention severs the link between the pain-body and your thought processes and brings about the process of transmutation.  It is as if the pain becomes fuel for the flame of your consciousness, which then burns more brightly as a result.  This is the esoteric meaning of the ancient art of alchemy: the transmutation of base metal into gold, of suffering into consciousness.  The split within is healed, and you become whole again.  Your responsibility then is not to create further pain.

Let me summarize the process.  Focus attention on the feeling inside you.  Know that it is the pain-body.  Accept that it is there.  Don't think about it — don't let the feeling turn into thinking.  Don't judge or analyze.  Don't make an identity for yourself out of it.  Stay present, and continue to be the observer of what is happening inside you.  Become aware not only of the emotional pain but also of “the one who observes,” the silent watcher.  This is the power of the Now, the power of your own conscious presence.  Then see what happens.

For many women, the pain-body awakens particularly at the time preceding the menstrual flow.  I will talk about this and the reason for it in more detail later.  Right now, let me just say this: If you are able to stay alert and present at that time and watch whatever you feel within, rather than be taken over by it, it affords an opportunity for the most powerful spiritual practice, and a rapid transmutation of all past pain becomes possible.

All things considered, it's surprisingly hard for people to actually get to kill themselves.

We have:

  • a system that only values someone for their net productivity, and misplaces their worth in all kinds of ways
  • mainstream philosophies/ontologies without much hope at all (see: materialism, and all that accompanies the current ongoing large patterns of this Earth)
  • bombardment of negativity and suppression events from the media
  • a system that not only is incapable of dealing with the majority of severe cases of depression in any constructive manner, but also lacks the basic fucking knowledge of how to have someone process their emotions and transmute them
  • a culture that actually contains suicide as a concept that's thrown around between people, and not even farcically sometimes
  • an increasing tendency to physically isolate people

So yeah, I'm honestly quite fucking impressed there's no more suicides than there are already. I think that you only need to see the increased rates of suicide among certain minorities to know that what it really takes is not only actively making your life miserable, but also crushing your worth as an individual, after you offered it to the eager hands of society. It takes for society to actively reject you.

Hope springs eternal; what it takes is for someone to show you that to listen to it is futile.

We've actually cultivated powerlessness and loss of hope in animals. Remember the experiment with the dog and the electrified cage with two chambers separated by a high fence? That the dog had to climb to reach the other, un-electrified side, until they just started electrifying both sides and the dog just gave up and surrendered on the spot to the shocks?

You can see we're masters of the trade at this kind of shit. First we force someone to play our twisted game, and then we make our game a lose-lose. That, is how we cultivate loss of hope.

“You see this goblet?” asks Achaan Chaa, the Thai meditation master. “For me this glass is already broken. I enjoy it; I drink out of it. It holds my water admirably, sometimes even reflecting the sun in beautiful patterns. If I should tap it, it has a lovely ring to it. But when I put this glass on the shelf and the wind knocks it over or my elbow brushes it off the table and it falls to the ground and shatters, I say, ‘Of course.’ When I understand that the glass is already broken, every moment with it is precious.”

wile wawa li lawa e mi. ilo toki li lawa e mi. mi toki ale li ilo toki. mi tawa ala ma. mi tawa ale ilo toki. pona ala.

mi ken tawa ma. mi en jan pona mi ken tawa ma.

#tokipona

Radiate

Radiate Radiate

Just radiate, just radiate Just radiate, just radiate

What is this? I can't sleep Just radiate Your love To me

What is this? I can't sleep Just radiate Your love To me

What is this? (just radiate) I can't sleep (just radiate) Just radiate Your love To me

What is this? (just radiate) I can't sleep (just radiate) Just radiate Your love To me

Just radiate

Intelligent networks are able to operate from a single language with translation interfaces that enable global intercourse. This means language is no longer a barrier to communication. Intelligent networks will introduce a meta-language that translates both real-time written and spoken applications. It will revolutionize the genetic mind's global construct, and facilitate the digitalization of your global economy.

There will be many within the Hierarchy, who will object vehemently to the notion of a global, digital economy, but we will tell you, it will happen regardless of the complaints and registered concerns. Your most powerful banks, computer manufacturers, and software companies will merge to create this momentous technology, and the One Language Intelligent Network (OLIN) will become the standard operating system of all the world's computer-based systems.

This will not occur until the year 2008, so it is some time before you will encounter this globalization of your economy, but all of the systems and architecture are already being designed and conceptualized in the minds of some of your brightest engineers and scientists. We assure you, this is not something to be feared, but rather embraced, and not because of the economic values, but because of the way the OLIN technology will facilitate the development of a global culture.

As the OLIN technology evolves, it will increasingly become subject to individual control. In other words, individuals will become inextricably linked into the network's entertainment and educational applications, which will become globalized. No longer will global media companies publish for a geographical market. They will produce content for a global audience and each individual will define what and how it desires to be entertained or educated.

The OLIN technology will “know” the preferences and interests of every individual linked to its network, and by the year 2016, it will be more ubiquitous than telephones in the late 20th century. Hence, the network will be controlled by individuals, and producers of content and services will be the “slave” or reactionary force of the individual. Thus, the individual will need to define their entertainment and educational desires carefully, or the OLIN technology will deliver content that is undesirable.

We know this sounds obvious and trite, but it is profoundly different than the way entertainment and education are delivered in your world of the pre-OLIN technology. The time capsules that the WingMakers have left behind will act as a template to those who operate outside of the limiting force of the genetic mind, and desire to create content for the OLIN technology even before it exists. The time capsules will show how to do this and demonstrate how to create multi-dimensional content that carries its viewer-participant into new corridors of understanding and illumination.

This is how the genetic mind will fragment and become unable to exert a unified force upon the human instruments of terra-earth. When it is in this condition it will yield to the transformation/mastership model of existence and form a synthesis with it. It will transform itself, and the genetic mind will become the leader of transformation for entities upon terra-earth instead of its barrier force.

One day, out of this fleshy cocoon I will rise like a golden bird of silent wing graceful as the smoke of a fallen flame. I will dream no more of places hidden—secreted away in heaven's cleft where the foot leaves no print.

One day, I will walk in gardens holding hands with my creation and creator. We will touch one another like lovers torn by death to say goodbye. We will lay in one another's arms until we awaken as one invisible to the other.

One day, I will isolate the part of me that is always present. I will dance with it like moonlight on water. I will hold it to myself in a longful embrace that beats perfection in the hymn of the Songkeeper.

One day, when I curl away inside myself I will dream of you this flesh-covered-bone of animal. I will yearn to know your life again. I will reach out to you as you now reach out to me. Such magic! Glory to covet the unknown! That which is is always reaching for the self that cheats appearances. Who dreams itself awake and asleep. Who knows both sides of the canvas are painted, awaiting the other to meld anew.


src

In this blogpost you will see our patented, time-tested and battle-proven method for how to discuss and work out complicated topics with your tulpas.

These strategies have been hard-won over hundreds of years of collective experience being distilled into the contents of this post.

They're a person. Talk it out like people do. There are no special rules.

Source

First Comment

I admire experimentation, so below comments should preferably be considered constructive..

I want the binary modules any user of Olin would upload today to be still working, untouched, in 5 years, assuming its dependencies outside of the module still work

There are only 3 program formats that enjoyed anywhere like that kind of longevity – PE, Linux ELF, and Jar, all with significant money behind them. Of these, only PE has managed anything like ABI and dependency compatibility across more than 10 years, and that's because of explicitly obsessive compatibility concerns baked into the culture of the company behind it.

The nearest best example to PE is Linux Intel ELF, where despite explicit efforts, and where glibc which nearly-almost-if-you-squint manages long term ABI stability, and the kernel which nearly-almost-if-you-squint manages long term compatibility with glibc, you can run a terminal program compiled at the start of the millennium if you boot with the right kernel command line options, so long as you also run it with an ancient buggy libc, and that program has no other system dependencies.

Coming from Python land, I can say categorically that any attempt to maintain feverishly accurate compatibility for a rich set of interfaces across a community is almost a pointless effort, the options always degrade to running ancient buggy deps, or updated deps with broken interfaces.

The Linux kernel barely manages it despite a strict policy, and they break it occasionally due to security concerns. Downstream community projects follow the whim of whoever is contributing code on that particular day, and their motivations are rarely if ever “compatibility”.

That is not to say a community effort couldn't manage >10 year compatibility, but that such concerns must be a foremost priority (rather than a cute goal) if there is even a dying chance of the attempt succeeding in the long term. It seems better that the inevitability of incompatibility is honestly accepted and designed for rather than hoping things will just work out.

The core idea is that everything is a file, to the point that the file descriptor and file handle array are the only real bits of persistent state for the process

Again an admirable goal, but this is Stockholm syndrome in its purest form, and learning completely the wrong lessons from UNIX land. Files are a shit abstraction, but ignoring those, streams even moreso. Very few elements of a modern application even at the lowest tiers lend themselves well to being expressed as a serialized bytestream.

The minimum primitive (and happy to share many references to support this) should be something like messages and ports. Streams can be expressed as messages, but the converse is not true without application-specific protocol scaffolding, of which there are a thousand examples on every modern UNIX system as a consequence of UNIX picking streams.

When a dagger process is opened, the following files are open:

Sequentially numbered transparent handles are a mistake, as are predefined resources, they allow code to make incorrect assumptions that are difficult to manage over the life of a system. You say that glibc should be built on these APIs, yet one of the principal restrictions glibc suffers from is its inability to open long-lived file handles that might conflict with program assumptions — assumptions often make implicitly without any conscious thought on the part of the programmer. Incremental numbering SUCKS.

A few years back Linux even considered adding a brand new fd namespace just so glibc could safely open files, all because of predictable numbered handles with assumed semantics that did not exist.

Try to learn from NT and elsewhere here — the user receives an opaque word, no predefined words exist, and an interface is provided to grant access to any standard resources without introducing global state.

open, close, read, write, sync

But I thought everything is a file.. why do we need these? Why can't we express these as files too?

Due to incorrect lessons above, in a real world system this list will inevitably grow to multiple times its original size. What does sync mean on a socket? How do I eject a DVD drive? How does an application read the system time? By opening some “time://” and reading a serialized time representation? Good luck with nanosecond resolution when microseconds are already lost on scaffolding and maybe parsing some ASCII format timestamp, and so a “one time only” specialized time() call appears.

10 years later and you have hundreds of entries just like /usr/share/man/man2 on a typical UNIX, probably alongside something like ioctl(). But of course this time will be different!

the open call (defined later), a file URL is specified instead of a file name. This allows for Dagger to natively offer programs using it quick access to common services like HTTP, logging or pretty much anything else.

The open call prototype as defined is totally unusable for any kind of network application. There is no room for setting any kind of meaningful options outside a single bitfield, and so already if I wanted to make any kind of custom HTTP request, the supplied interface is useless and I must link a module with a real client built on top of the tcp:// handler.

There seems to be no long term sense whatsoever in baking a handful of protocols into the “filesystem” interface, especially not with these APIs.

I’d like to add the following handlers in the future:

I see they have thought of time:// already! By discarding one of the few remaining uniformities of the UNIX file API – the namespace it exports. It already looks like we're coping with a bad base abstraction by shoving everything we need into magic strings.

What happens if I only read 2 bytes from time://? Do I get pieces of the last sampled timestamp because some internal buffering now exists, or do i get half the old timestamp half the new one, or do I continually get the first 2 bytes of unrelated timestamps, or perhaps we simply return an error because the buffer wasn't big enough? It's almost like even a timestamp doesn't really fit the stream-of-bytes file abstraction.

Very happy to see all these new WebAssembly efforts, but this one's present design fails to learn any lesson from our past suffering.

My Reply

below comments should preferably be considered constructive

Author of the post here. Don't worry, I am taking them as such.

It seems better that the inevitability of incompatibility is honestly accepted and designed for rather than hoping things will just work out.

How would this look like? I'm interested by what you mean by this. I'm not sure how incompatibility with things like reading out sequential memory is going to be tolerable though.

Again an admirable goal, but this is Stockholm syndrome in its purest form, and learning completely the wrong lessons from UNIX land. Files are a shit abstraction, but ignoring those, streams even moreso. Very few elements of a modern application even at the lowest tiers lend themselves well to being expressed as a serialized bytestream.

The minimum primitive (and happy to share many references to support this) should be something like messages and ports. Streams can be expressed as messages, but the converse is not true without application-specific protocol scaffolding, of which there are a thousand examples on every modern UNIX system as a consequence of UNIX picking streams.

Yes, I eventually want to settle on messages. The reason I have picked file I/O in the meantime is so I can hack something together that will “just work”. From a generic level, I don't know what memory addresses are safe to write to. Using the read() function makes the program choose for itself.

Streams are a shitty abstraction, but most of the world is currently built on them, so I'm using streams in Dagger if only to make Dagger have to be thrown away in the long run. Streams may be bad in the long term, but for now we can do HTTP via the filesystem calls: https://github.com/Xe/olin/blob/master/internal/abi/dagger/t...

file descriptors are a mistake

Yeah, I'm betting that they are gonna be a mistake in the long term. I just don't know what abstraction to use that won't be yet. I guess I sort of am using file streams as messages. I'm gonna see what it would look like to make messages the primitive.

But I thought everything is a file.. why do we need these? Why can't we express these as files too?

File descriptors are adjectives, system calls are verbs. The verb is the action you want to do, such as read. The adjective is the source, ie the semantically standard input of the process.

Due to incorrect lessons above, in a real world system this list will inevitably grow to multiple times its original size.

Yep. I'm expecting this design to be wrong in the long term. It really started as an experiment to see how far minimalism could go.

The open call prototype as defined is totally unusable for any kind of network application. There is no room for setting any kind of meaningful options outside a single bitfield, and so already if I wanted to make any kind of custom HTTP request, the supplied interface is useless and I must link a module with a real client built on top of the tcp:// handler.

https://AzureDiamond:hunter2@bash.org/244321 is what I usually do with URL's and hard-defined authentication tokens. Works for me.

I see they have thought of time:// already! By discarding one of the few remaining uniformities of the UNIX file API – the namespace it exports. It already looks like we're coping with a bad base abstraction by shoving everything we need into magic strings.

Yeah, I'm starting to see that Dagger is WAY TOO MINIMAL. I'm gonna go poke around POSIX and other minimal OS' to see what syscalls they expose. For what it's worth, the Go runtime has its own time() call that I expose here: https://github.com/Xe/olin/blob/master/internal/abi/wasmgo/abi.go#L97

Very happy to see all these new WebAssembly efforts, but this one's present design fails to learn any lesson from our past suffering.

The first design always has to be thrown out :D

Their reply

Picking just the most fun aspect to reply to, because this is too long already :)

would this look? I'm interested by what you mean by this

One area UNIX fails at is a single global flat system interface, it makes evolutionary change difficult without introducing permanent “variant” system calls (e.g. openat()) that must be supported in tandem with the original interface, in addition to an automatic penalty for any innovation that might wish to add more, because it must be supported forever.

To skirt around this, one popular option in UNIX land is instead not to define any interface: just dump whatever magic is required into some ioctl() and claim it is device-specific, and so we end up with what an interface that isn't quite guaranteed and definitely unofficial, but that's okay because it's driver-specific, but then a second driver comes along and adds a similar interface, and now we have 2 options for frobbing a particular device, with no obviously correct choice, and no guarantee frobbing will be supported that way forever. In other words, we got the worst of both worlds by trying to ignore impermanence. (Just a side note, a real-life example of those ioctls might be e.g. how Linux used to support asking the filesystem driver for a mapping of unused sectors, or how you set or query the FAT filesystem's DOS filesystem label)

UNIX exports APIs for all of this, and it's mostly frozen in stone forever:

  • Rewinding tape drives
  • Configuring start/stop bits of serial lines
  • Filesystem operations with fixed semantics designed around a local storage device, with uid/gid/mode security, and with extended attributes and ACLs bolted on the side
  • Multiple variants of file locking schemes that are all perfectly useless in multithreaded apps
  • A security model that's baked in at the API level (e.g. chown()).

Just taking the silly 'rewinding tapes' example, planning an API for permanent compatibility with a problem space that 99.9% of people no longer have, rising to 100% at some point eventually, it's easy in hindsight to see this interface should be modularized somehow, and preferably made entirely optional.

How that modularity looks is definitely up for debate.. looking at Windows for one approach, in COM (and ignoring its baroque useability!) handles export only one interface (IUnknown) whose sole method allows enumerating the contracts the handle (object) supports. For example here is DirectShow: https://docs.microsoft.com/en-us/windows/desktop/directshow/... , see how a single input can implement IDvdControl, IAMTVTuner, both, or neither, and if neither are implemented, the handle is still useable via IPin and related interfaces that actually control how data flows from the input.

Mapping that to UNIX, a handle might have protocols like IUnixSecurity, ITapeOperations, IBraindeadLocking, ILinuxSpecificLocking, IStream, all or none etc., where a handle has no guaranteed fixed vocabularity perhaps except for the most fundamental expected anywhere that handle is found (in the case of a file, perhaps that is IStream).

By exporting the impermanence down to consumer code, accessing any particular interface becomes an explicit affair, because you must always request it upfront. You can still implement a media player program by wiring up some filter graph using a handle you received from someplace else, but disable the rewind and eject buttons if querying those interfaces failed — this is literally how some stuff works on Windows:

handle = ask_user_for_media_input()
wire_up_graph(handle)
if(supported(handle, "dvd player")) {
    enable_eject_button();
}

Meanwhile at the top of the stack, outside of absolutely having to support some core interfaces that can never go away, the cost of adding and retiring sundry features is reduced, as the reality of permanence that has always existed has been pushed down the stack, where end users can choose to accept or ignore it.

An ideal interface might resemble a predefined root handle or sentinel value with the ability to construct new handles bound to some protocol. Imagine a language like (but not quite) protocolbuffer services, where those read/write/open/close/sync calls were methods of a particular named interface. The IDL would output wrappers to speak it. Probably already you can see room for splitting 'sync' out into some kind of IBufferedStream optional interface.

Maybe like:

#include <os.h>                             // Invoke(handle, char *interface, void *in, void *out) -> bool
                                            // Close(handle) -> void
#include <os/interface.h>                   // GetInterface(handle, char *interface) -> void *
                                            // Require(handle, char *interface) -> void *
#include <os/services/console.h>            // IF_CONSOLE, Console, Console_write
#include <os/services/filesystem.h>         // IF_FILESYSTEM, Filesystem, Filesystem_open, Filesystem_error
#include <os/services/stream.h>             // IF_STREAM, Stream_read, Stream_write
#include <os/services/buffered_stream.h>    // IF_BUFFERED_STREAM, BufferedStream_sync

int main(void)
{
    Filesystem fs = Require(NULL, IF_FILESYSTEM);
    Console console = Require(NULL, IF_CONSOLE);

    File *fp;
    if((fp = Filesystem_open(fs, "/etc/passwd", O_RDWR)) == NULL) {
        Console_write(console, "open failed: %s", Filesystem_error(fs));
        return 1;
    }

    if(File_write(fp, "foo\n") == -1) {
        Console_write(console, "write failed: %s", Filesystem_error(fs));
        return 1;
    }

    // Optional. Underlying Invoke() will fail if interface absent.
    BufferedStream_sync((BufferedStream) fp);

    return 0;
}

A real killer would be other than simplifying that calling style, somehow unifying it with the calling convention for linked modules, so by replacing a handle you could direct an OS-level protocol to a library, or perhaps better, the act of calling an OS service caused an optional library to be loaded and bound to the handle you were returned, say in the case of an ancient ITapeDrive interface that's long since stopped being a once-upon-a-time core feature.

But the main point from the example is probably the notion of an OS with only two core interfaces – Invoke() and Close(). Another place you could look for inspiration of this sort is Objective C — a similar concept is built into its guts, and its dynamic dispatch msgsend() function is optimized to all hell to match!