notes:tableshots
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
notes:tableshots [2023/12/19 13:36] – [Live from the video feed] discord | notes:tableshots [2024/02/17 00:46] (current) – osnr | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Towards a folk computer ====== | ====== Towards a folk computer ====== | ||
+ | |||
+ | // | ||
Folk Computer is a research & art project, led by Omar Rizwan and Andrés Cuervo, centered around designing | Folk Computer is a research & art project, led by Omar Rizwan and Andrés Cuervo, centered around designing | ||
Line 28: | Line 30: | ||
and display their outputs. You can see my setup in the [[https:// | and display their outputs. You can see my setup in the [[https:// | ||
- | {{ notes:hello_world.gif?600 }} | + | {{ notes:hello_folk_1.gif?600 }} |
The program is identified by its AprilTag, a variant of QR-code specialized for | The program is identified by its AprilTag, a variant of QR-code specialized for | ||
Line 37: | Line 39: | ||
<code tcl> | <code tcl> | ||
- | Wish $this is labelled " | + | Wish $this is labelled " |
- | Wish $this is outlined green | + | |
</ | </ | ||
- | |||
Programs are written in the Folk programming language, a domain-specific | Programs are written in the Folk programming language, a domain-specific | ||
Line 49: | Line 49: | ||
==== Fulfilling wishes ==== | ==== Fulfilling wishes ==== | ||
- | All statements get stored in a reactive database. We can react to a '' | + | All statements get stored in a reactive database. We can react to a statement |
a '' | a '' | ||
- | example, | + | example, we can write a second program which affects |
- | we' | + | |
+ | {{ notes:hello_folk_2.gif? | ||
<code tcl> | <code tcl> | ||
- | When /someone/ wishes /program/ is labelled | + | When /someone/ wishes /p/ is labelled |
- | # Find the region which corresponds to the program. | + | Wish $p is outlined green |
- | # Draw the text at the centroid of the region. | + | |
} | } | ||
</ | </ | ||
- | The first '' | + | Notice how, as soon as I drop the second program on the table, the first gets outlined |
- | same language as the '' | + | green. The variable |
- | be bound to '' | + | outlined. The same happens when a put a copy of the first program |
+ | '' | ||
+ | Note that there's very little syntax | ||
+ | arbitrary in-fixed parameters. This leads to very readable code, even | ||
+ | approaching English. The choice of TCL, a string-based programming language, is | ||
+ | the central reason such a design is possible. | ||
+ | |||
+ | Somewhere else in our system there is a program which [[https:// | ||
+ | another that [[https:// | ||
<code tcl> | <code tcl> | ||
Line 72: | Line 80: | ||
</ | </ | ||
- | Note that there' | + | But where are these programs, if not on the table? The system has some default " |
- | arbitrary in-fixed parameters. This leads to very readable code, even | + | |
- | approaching English. The choice of TCL, a string-based programming language, is | + | |
- | the central reason such a design is possible. | + | |
- | + | ||
- | But where are these '' | + | |
always running despite not being physically activated. | always running despite not being physically activated. | ||
On each frame of execution, the OS sees all statements that are live in the database, | On each frame of execution, the OS sees all statements that are live in the database, | ||
Line 158: | Line 161: | ||
</ | </ | ||
- | The two helper programs began as printed | + | The two helper programs began as printed |
==== Inline device drivers ==== | ==== Inline device drivers ==== | ||
Line 209: | Line 212: | ||
<code tcl> | <code tcl> | ||
When $this has region /r/ { | When $this has region /r/ { | ||
- | Claim $this' has region [region move $r down 350px] | + | Claim $this' has region [region move $r down 110%] |
} | } | ||
When $this' has camera slice /slice/ { | When $this' has camera slice /slice/ { | ||
- | Wish $this displays $slice | + | Wish $this displays |
} | } | ||
</ | </ | ||
Line 296: | Line 299: | ||
With inspiration from the tradition of [[https:// | With inspiration from the tradition of [[https:// | ||
- | some further interface ideas emerge. A simple, and very clever, way to start is "paper button". | + | some further interface ideas emerge. A simple, and very clever, way to start is [[https:// |
- | We a physical mechanism to impede detection until a user action is made: | + | We use physical mechanism to impede detection until a user action is made: |
{{ notes: | {{ notes: | ||
Line 549: | Line 552: | ||
physical programs and paper interfaces, instead of mouse and screen. This folk | physical programs and paper interfaces, instead of mouse and screen. This folk | ||
interface is just one of many supported by the Folk operating system, a means | interface is just one of many supported by the Folk operating system, a means | ||
- | to coordinate peripherals (camera and projector) in a reactive manner. | + | to coordinate peripherals (including, but not limited to, camera and projector) |
+ | in a reactive manner. | ||
{{ notes: | {{ notes: | ||
Line 561: | Line 565: | ||
objects into the material world. | objects into the material world. | ||
- | While Folk retains | + | While Folk currently |
class, it should not be confused with mere post-modern pastiche. The primary | class, it should not be confused with mere post-modern pastiche. The primary | ||
function of the system is //not// the sign. It avoids the temptation of | function of the system is //not// the sign. It avoids the temptation of | ||
Line 572: | Line 576: | ||
plasticity of computation lightens the finitude of the material world. | plasticity of computation lightens the finitude of the material world. | ||
- | // | ||
notes/tableshots.1702992981.txt.gz · Last modified: by discord