Daimio

Make your applications programmable

I have a problem

(perhaps that should be plural)

Let's use JS!

We're going to need a smaller language

What would a solution look like?

We need a templating language

And a composition language

Oh, and a coordination language

Idea: combine all the languages!

Idea: combine most of the languages!

So we need an embeddable dataflow templating language expressing application logic with no side effects.

And that's Daimio!

Uhm, you might need to show us some examples.

App fun && readability

=> namespacing + named params

    user add
  
    amp set-volume to 11
  
    math add value 5 to 13
  

Data transformations

Dataflow means pipes

    3 | add 5
  

DAG means pipeline connectors

    3 | >x | add _x | add _x
  

Embeddable code means delimiters

    "this is a string"
  
    "but {"this"} is compiled code"
  

How to delimit internal pipelines?

Idea: reuse our string delimiters!

    {5 | add {4 | add 3}}
  
    {"abra {:cada}"}
  
    {( :abra {:cada} ) | string join}
  

You said something about merging

    {( 1 2 3 ) | map block "{__ | add 1}"}
  
    {( :a :b :c ) | each block "The letter {__} is ok. "}
  

But can it do cellular automata?

{ __ | map with {* (:cells __in)} block "{
    __ | map with {* (:row _key :cells _cells)} block "{
      __ | switch (
        0 { _cells.{_row | add -1 | range 3}.{_key | add -1 | range 3}
          | max | eq 2 | then 2 else 0}
        1 0 
        2 1)}"}"}
  

Expressible interactions

Coordination language models

Expressible interactions

Dimensions of variance

Expressible interactions

How can we optimize over reasonability?

Expressible interactions

(space reserved for an image)

We need some safety

Idea: use components as execution spaces!

What about state?

Idea: use spaces to contain state!

Ok but where does the code live?

Idea: code coexists with subspaces!

So how do we avoid side effects?

Idea: use outermost space's ports!

More code please

daimio.org

@dann

dxnn @ github

dann @ bentobox . net