changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > org > notes / 20240419.org

changeset 13: 531810d42deb
parent: 4839b0675118
author: Richard Westhaver <ellis@rwest.io>
date: Sun, 18 Aug 2024 22:16:12 -0400
permissions: -rw-r--r--
description: weekend warrior
1 * How it works
2 :PROPERTIES:
3 :ID: 439a4945-de2f-4985-ba6c-fe6421aa9ad9
4 :END:
5 The backend services are written in Rust and controlled by a simple
6 messaging protocol. Services provide common runtime capabilities known
7 as the /service protocol/ but are specialized on a unique /service
8 type/ which may in turn register their own /custom protocols/ (via
9 core).
10 
11 Services are capable of dispatching data directly to clients, or
12 storing data in the /database/ (sqlite, postgres, mysql).
13 
14 The frontend clients are pre-dominantly written in Common Lisp and
15 come in many shapes and sizes. There is a cli-client, web-client
16 (CLOG), docker-client (archlinux, stumpwm, McCLIM), and native-client
17 which also compiles to WASM (slint-rs).
18 
19 * Guide
20 :PROPERTIES:
21 :ID: 65140d2c-5d59-48cd-946c-01c380a37f08
22 :END:
23 ** Build
24 :PROPERTIES:
25 :ID: ad0652ca-4abf-4d27-8897-a61a13a6e61d
26 :END:
27 - *install dependencies*
28  #+begin_src bash
29  ./tools/deps.sh
30  #+end_src
31 - *make executables* \\
32  Simply run =make build=. Read the ~makefile~ and change the options
33  as needed.
34 - MODE :: Mode (debug, release)
35 - LISP :: Lisp (sbcl, cmucl, ccl)
36 - CFG :: Config (default.cfg)
37 ** Run
38 :PROPERTIES:
39 :ID: b2295442-ccb7-4a5c-8a9e-ea8502aad636
40 :END:
41 #+begin_src shell
42  ./demo -i
43 #+end_src
44 ** Config
45 :PROPERTIES:
46 :ID: 600be170-d032-4280-a7b5-c46e3c157206
47 :END:
48 Configs can be specified in JSON, TOML, RON, or of course SEXP. See
49 =default.cfg= for an example.
50 ** Play
51 :PROPERTIES:
52 :ID: 56a69ed7-2eb3-4490-95a1-072cee985df5
53 :END:
54 The high-level user interface is presented as a multi-modal GUI
55 application which adapts to the specific application /instances/
56 below.
57 *** Weather
58 :PROPERTIES:
59 :ID: 804a174b-534c-4a04-966a-b44c0a86fbd4
60 :END:
61 This backend retrieves weather data using the NWS API.
62 *** Stocks
63 :PROPERTIES:
64 :ID: 4e7339bb-aaf3-4fab-90e4-05e13f24f881
65 :END:
66 The 'Stocks' backend features a stock ticker with real-time analysis
67 capabilities.
68 *** Bench
69 :PROPERTIES:
70 :ID: e3cf0add-6ded-4c05-a05d-7ef463b85b08
71 :END:
72 This is a benchmark backend for testing the capabilities of our
73 demo. It spins up some mock services and allows fine-grained control
74 of input/throughput.
75 * tasks
76 :PROPERTIES:
77 :ID: a16a3807-0e06-4c8d-baf6-5dfa8f8f5585
78 :END:
79 ** TODO DSLs
80 :PROPERTIES:
81 :ID: 3ae4754e-0c0f-4923-9e53-ae962b8638a1
82 :END:
83 - consider tree-sitter parsing layout, use as a guide for developing a
84  single syntax which expands to Rust or C.
85 - with-rs
86 - with-c
87 - with-rs/c
88 - with-cargo
89 - compile-rs/c
90 *** TODO rs-macroexpand
91 :PROPERTIES:
92 :ID: f612975f-6bcc-4aab-b0d8-65b8ff0a0d0f
93 :END:
94 - rs-gen-file
95 - rs-defmacro
96 - rs-macros
97 - rs-macroexpand
98 - rs-macroexpand-1
99 *** TODO c-macroexpand
100 :PROPERTIES:
101 :ID: 49f5c224-026d-4cdc-a326-1742e64c4279
102 :END:
103 - c-gen-file h/c
104 - c-defmacro
105 - c-macros
106 - c-macroexpand
107 - c-macroexpand-1
108 *** TODO slint-macroexpand
109 :PROPERTIES:
110 :ID: 486beb12-179b-4acc-8507-cdc498edb628
111 :END:
112 - slint-gen-file
113 - slint-defmacro
114 - slint-macros
115 - slint-macroexpand
116 - slint-macroexpand-1
117 *** TODO html (using who)
118 :PROPERTIES:
119 :ID: 2e81a19c-874c-4fd7-be0f-f6cd62c660db
120 :END:
121 ** TODO web templates
122 :PROPERTIES:
123 :ID: 95f7d6ac-c010-4d1d-a47d-1693bb7d6eab
124 :END:
125 create a basic static page in CL which will be used to host Slint UIs
126 and other WASM doo-dads in a browser.
127 ** TODO CLI
128 :PROPERTIES:
129 :ID: fc1d5364-279c-4d5f-baea-ed2c110b63f0
130 :END:
131 using clingon, decide on generic options and write it up
132 ** TODO docs
133 :PROPERTIES:
134 :ID: 467e84e3-e72f-4764-8858-cc15fdc17e8a
135 :END:
136 work on doc generation -- Rust and CL should be accounted for.
137 ** TODO tests
138 :PROPERTIES:
139 :ID: 70aea01c-d01e-4ddf-aaf5-c86183a7e250
140 :END:
141 We have none! need to make it more comfy - set up testing in all Rust
142 crates and for the lisp systems.