On Humans, Computers, and Interoperability.

Language. Words.

Around the world, there are 7,117 human langauges.

For computers, there are between 250 and 9,000 programming languages, depending on who you ask.

Yet, very few langauges have the outsized impact than English has had on society and JavaScript has had on technology. In turn, these two langauges have had an outsized impact on human-computer civilization.

Of the population of earth, English is known by 6.3% and JavaScript at .00002%.

An outsized impact indeed.

But why English or why JavaScript?

Flexibility and expressiveness.

You can easily make up words in english or make up words in JavaScript. People do that all the time. The languages grow and evolve over time.

Look at versions from a decade ago or from strongly independent teams, they both can appear confusingly incompatible, just from how they have proliferated in modern usage and not their semantic capabilities.

Is it good to make up words in English and in JavaScript?

Ultimately, that depends on the goal. In the context of interoperability, more words is a bad thing.

More words lead to additional context, increases the surface area for misunderstanding, and typically an existing word would have been sufficient to satisfy basic, clear communication.

Toki Pona is a language that was created to understand the meaning of life in 120 words. The literal meanings of “Toki” and “Pona” is “language” and “good”, completed, “The language of good.” Toki Pona has grown to now 137 words based on usage.

Toki Pona is generally regarded as too simplistic for communicating complex technical information. I'm curious if it is possible to simplify technology sufficiently enough to be expressed through the Toki Pona language.

While, this exercise is hypothetical today, it is possible to begin plotting a path towards this future today. The primary advantage of having a language like Toki Pona become a source of knowledge, will allow us as a planet to move past technical english dominance.

Toki Pona is made of 14 characters and 14 sounds with words coming from languages including English, Esperanto, Finnish, Acadian French, Croatian, Japanese, Georgian, Lojban, Dutch, Tongan, Tok Pisin, Mandarin Chinese, Cantonese and Welsh.

By learning Toki Pona, linguists are also exposed to other languages and in a perfect world, also exposed to people they can communicate fluently with, despite not sharing the same primary language.

Logically, when more humans communicate with Toki Pona, computers will begin to communicate with them in Toki Pona as well.

I don't speak Toki Pona yet, but I've thought about which words I would need to learn first to be able to teach JavaScript. This is a short, almost philosphical exercise, but I'll end with a JavaScript sample that connects what I'm describing to Hyper Text, the intersection between English, JavaScript, Toki Pona, the past, the present, and the future.

what

what do

what do words

what do words mean?

what do symbols mean?

what does mean mean?

what does it mean to learn?

what does it mean to teach?

what does it mean to draw?

what does it mean to style?

what does when mean?

what do words & symbols mean when used to learn, teach, draw, and style?

when, what, verb.

click, touch, tap, drag, play, pause, up, up, down, down, left, right, left, right, b, a, select, start, x, y

why human or why computer or why english or why javascript or why paper or why ink?

Hyper Text

Hyper Text Markup Language. Hyper Text Transfer Protocol.

Human language. Computer protocol.

Markup Transfer.

Who? Us, me, you.

Now.

function markup({ folder }) {
    const tags = new Set(
        [...document.querySelectorAll(':not(:defined)')]
            .map(({ tagName }) => tagName.toLowerCase())
    )

    tags.forEach(async (tag) => {
        const url = `${folder || '.'}/${tag}.js`
        const exists = (await fetch(url, {method: 'HEAD'})).ok
        if(!exists) return
        let definable = true
 
        await import(url).catch(() => { definable = false })

        definable = definable &&
            document.querySelector(tag).matches(':not(:defined)')

        if(definable) {
            customElements.define(
                tag,
                class WebComponent extends HTMLElement {
                    constructor() {
                        super();
                    }
                }
            );
        }
    })
}

(function({ folder }) {
    markup({ folder })
    new MutationObserver((mutationsList) => {
        markup({ folder })
    }).observe(document.body, { childList: true, subtree: true });
})({ folder: './markup' })

If you want to interoperate with me as computers, participate in the https://braid.org working group. If you want to interoperate with me as humans, catch me at dweb.

thanks all.