Tala means 'to speak' or 'number' in Icelandic. It is the interface for
interacting with the saman versioning system. The idea is to index behaviours
that can be programmed into computers and assess which ones are desireable as
well as trustworthy.
# Design
{ You can run overview.sh for intro }
driver-loop is the bottom template, we have three (dependent) slots.
defstate is the top template, it can be cleanly checked with predicates.
defstate coordinates input, drawing and cleanup for the driver-loop.
each "name" (canonical S-expression) is in 1-1 correspondence with a state.
To understand the higher level design please check datalisp.is (and wait patiently for updates).
# Installing ** Warning ** this is not yet working.
Quickly install the current version using ./install.sh
TODO (besides getting it working)
- Update version logic (from completely manual :)
- Make it configurable how much code is seen by the build (via asd).
## Debugging install
You can use the shell.sh script to get a repl to run the commands guix will run.
This can let you locate problems faster than rebuilding with guix constantly.
# Hacking
Run hack.sh in the terminal where you will test the program.
Then open emacs and do M-x `sly-connect` and give it port 4008.
Now you can run `(in-package #:init-dev)` to be able to access *scr*
and `(croatoan:submit (croatoan:clear *scr* :redraw t))` will allow
for clearing you canvas.
To start hacking on the menu load it into the application using...
:: TODO/REVIEW BELOW
...now you can open src/tala.lisp and send the buffer to the repl.
(test) lets you try the program in the terminal where you ran the script.
## Contributing
Send me an email if you are interested: ilmu@rishi.is.
# Notes
Split tui into lots of files each their own package.
main picks the one active at any point in time.
entry point is opening a shell with the package.
List of future concerns:
* Communicating menus (like IRC/email client for example).
* Breaking a window in the ncurses sense out into a new terminal window.
* Font availability and bundling fonts alongside the program (guix).
* Toggling into byte font (square with 8 tringales).
* When ASCII show unprintable characters with the byte character.
* When UTF8 show unprintable / unavailable characters as bytes?
fontforge is cool
Ghost process:
if you abort the thread that you send croatoan tasks to (instead of skipping task) then you can have to kill sbcl using sth like `ps -e | rg sbcl` and `kill -9 $PID`.