Trolling for ideas on which way I should go. I hav...
# thinking-together
g
Trolling for ideas on which way I should go. I have too many choices in front of me and way too many learning curve(s) to go down. I've got a drawware REPL that uses 3 windows: (1) draw.io, (2) browser that displays output of run, (3) python glue running in a terminal window that watches the timestamp on the draw.io file, and spawns a compile/run cycle when the drawing changes. The python glue creates 2 websockets (1) a 1-way conduit to the browser to send it JSON key/value objects (strings) and (2) a 1-way conduit from the spawned compiler which sends key/value messages which get forwarded to the browser. The effect is like
printfs
but in a browser instead of a console (and more useful than
printf
because it doesn't need to be sequentially inserted into the circuit). It knows how to shell-out to command-line commands. This is a VSH - a Visual SHell to replace /bin/bash. The whole mess works "fast enough" to act as a code development REPL. What's the best way to package the whole thing into a singly-deployable app? (single from users' perspective, maybe retain all processes and windows). Should I dump the browser and go with some local GUI package (what?). Should I be looking at redbean? Should I be looking at Glamorous Toolkit? CLOG? Keeping the browsers and sockets makes it scalable across distributed machines and might result in new ideas. I want to keep draw.io, since it saves me a lot of work (it's a PITA to use, but better than anything I could build myself). Keeping Python and JS lets me forego actual coding (I just ask AI to build the thingies - AI has been trained on zillions of lines of code in JS and Python). I'm good with Common Lisp, Python and JS (but, hand-written JS usually creates mysterious failures that are hard to debug. Lispworks debugger is the "best", next is Python). I'm good with cranking out little nano-DSLs using OhmJS (t2t), so I can generate code instead of writing tricky code. This is VSH, using websockets instead of UNIX pipes. Using 2D node-and-arrow drawings instead of 1D text on the command line shell syntax.
k
This is really a question about assembling software systems. The answer mostly depends on "for whom"? Which platforms, which level of user competence? Here is what I would do, for the platform I use (Linux) and for users "like me", i.e. power users but not software professionals. I'd write Guix package for the full assembly (where "draw.io" is just a URL of course because you can't run it locally). Guix is made for creating software assemblies, and it can integrate absolutely anything. You can make a package that depends on Python and on a browser, no problem. You can then deploy the assembly as a single command, which you can then put into a shell script for convenience. Or into a .desktop file for launching from Gnome or whatever else.
g
FYI: the draw.io app can be downloaded and run on a local machine.
k
Then you can package it for Guix as well and have a self-sufficient software assembly for local use. Sounds good!