Monorepo for Aesthetic.Computer
aesthetic.computer
1### Write a Piece
2
3Each "piece" on AC is coordinated by a single `.mjs` (JavaScript module) or
4`.lisp` (a custom dialect[0]) file.
5
6This follows Processing's "sketchbook"[1] based development model of one source
7file per explorable idea, and the Unix philosophy's pattern of offering
8user-level composability across small single-purpose programs.
9
10 - Drag & Drop
11
12 1. Enter `source` to download a bare bones `blank.mjs` piece template.
13 (Or prefix any existing piece with `source` to fork, like `source notepat`.)
14 2. Open the piece template in a text editor and change `wipe("gray")` -> `wipe("blue")`.
15 3. Save the file and drag it into the AC window to run it and preview the
16 change.
17 4. Press the piece name in the top left corner to return to `prompt`.
18 5. Enter `publish`[2] to put the code online.
19
20 - VS Code
21
22 1. Enter `edit` to install the AC VS Code extension.
23 2. Press the rectangular AC prompt icon in the VS Code sidebar to open the
24 AC panel.
25 3. Enter `source` to open a blank JavaScript piece template in the VS Code
26 editor.
27 4. Save the template to run it in the AC panel.
28 5. Press the command name in the top left corner to return to `prompt`.
29 6. Enter `publish`[2] to put the code online.
30
31 - Testing
32
33 For instant multi-device testing in studios and classrooms, AC uses a simple
34 `channel` feature to broadcast incremental changes during piece development.
35
36 1. Enter `channel custom-name` replacing `custom-name` with something unique
37 on the primary development device.
38 2. Enter the same command `channel custom-name` on any additional test device.
39 3. Drag & Drop piece code to AC or save the file in VS Code to update all
40 devices.
41
42---
43
44[0] "Kid Lisp" source & samples:
45 https://github.com/whistlegraph/aesthetic-computer/blob/main/system/public/aesthetic.computer/lib/kidlisp.mjs
46
47[1] Processing Foundation homepage: https://processing.org
48
49[2] Published pieces by anonymous users are temporarily uploaded to a global
50 namespace using a short random identifier. Registered users publish under
51 their `@handle` where the filename is used for the piece name, or can be
52 overridden with `publish piece-name-here`. Find published pieces by other
53 handles by entering `list @handle`.