User Tools

Site Tools


notes:tableshots

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
notes:tableshots [2023/12/19 19:55] – [Hello folk!] discordnotes:tableshots [2024/02/17 00:46] (current) osnr
Line 1: Line 1:
 ====== Towards a folk computer ====== ====== Towards a folk computer ======
 +
 +//[[https://cristobal.space|Cristóbal Sciutto]], December, 2023//
  
 Folk Computer is a research & art project, led by Omar Rizwan and Andrés Cuervo, centered around designing  new physical computing interfaces. The aims are, among others: Folk Computer is a research & art project, led by Omar Rizwan and Andrés Cuervo, centered around designing  new physical computing interfaces. The aims are, among others:
Line 28: Line 30:
 and display their outputs. You can see my setup in the [[https://folk.computer/directory#folk-zeca-manhattan-ny-usa|Folk directory]]. Here's a first program: and display their outputs. You can see my setup in the [[https://folk.computer/directory#folk-zeca-manhattan-ny-usa|Folk directory]]. Here's a first program:
  
-{{ notes:hello_folk.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 47: Line 49:
 ==== Fulfilling wishes ==== ==== Fulfilling wishes ====
  
-All statements get stored in a reactive database. We can react to a ''Wish'' using+All statements get stored in a reactive database. We can react to a statement using
 a ''When''. If the clauses match, then some code gets executed in response. For a ''When''. If the clauses match, then some code gets executed in response. For
-example, to fulfill the  wish to label and outline in our "Hello folk!" program, +example, we can write a second program which affects the first. 
-we'write something along the lines of:+ 
 +{{ notes:hello_folk_2.gif?600 }}
  
 <code tcl> <code tcl>
-When /someone/ wishes /program/ is labelled /text/ +When /someone/ wishes /p/ is labelled "hello folk!" 
-  # Find the region which corresponds to the program. +    Wish $p is outlined green
-  # Draw the text at the centroid of the region.+
 } }
 </code> </code>
  
-The first ''When'' determines how to draw lines by establishing a pattern with the +Notice how, as soon as I drop the second program on the table, the first gets outlined 
-same language as the ''wish'' of our first program. The variable ''/program/'' will +green. The variable ''p'' is bound to the identifier of the first program, and it gets 
-be bound to ''$this'' and ''text'' to ''hello world!''Similarlyfor the outline, we'd write:+outlined. The same happens when a put a copy of the first program on the tableAnother 
 +''p'' is bound, which also gets outlined green. 
 +Note that there's very little syntax and clause-matching supports 
 +arbitrary in-fixed parameters. This leads to very readable code, even 
 +approaching EnglishThe choice of TCLa string-based programming language, is 
 +the central reason such a design is possible. 
 + 
 +Somewhere else in our system there is a program which [[https://git.folk.computer/folk/tree/virtual-programs/label.folk#n13|draws text]] on the table, and 
 +another that [[https://git.folk.computer/folk/tree/virtual-programs/outline.folk#n12|draws colored lines]]. They are implemented just as our second program aboveusing the ''When'' primitive to execute some code.
  
 <code tcl> <code tcl>
Line 70: Line 80:
 </code> </code>
  
-Note that there's very little syntax and clause-matching supports +But where are these programs, if not on the table? The system has some default "virtual programs",
-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 ''when'' clauses? The system has some default "virtual programs",+
 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 156: Line 161:
 </code> </code>
  
-The two helper programs began as printed program, but eventually became a stable "virtual-program" that are always running in the background. The face that programs are always running, waiting to be matched, makes it much more natural to bootstrap off of previous code you've written. You slowly build your own personal language that lets you express the things you want to make.+The two helper programs began as printed programs, but eventually will become stable "virtual-programs" that run in the background. The fact that some programs are always running, waiting to be matched, makes it much more natural to bootstrap off of previous code you've written. You slowly build your own personal language that lets you express the things you want to make.
  
 ==== Inline device drivers ==== ==== Inline device drivers ====
Line 210: Line 215:
 } }
 When $this' has camera slice /slice/ { When $this' has camera slice /slice/ {
-    Wish $this displays $slice+    Wish $this displays camera slice $slice
 } }
 </code> </code>
Line 571: Line 576:
 plasticity of computation lightens the finitude of the material world. plasticity of computation lightens the finitude of the material world.
  
-//Cristóbal Sciutto, December, 2023// ====== 
  
notes/tableshots.1703015737.txt.gz · Last modified: by discord

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki