It’s a new year and it’s time to write down my hacking goals for the year.
The over-arching goal is still to write an emacs-like editor by mashing Deuce (generic functions, CLIM) and Edwin (Scheme, modules) together, but there are many paths to reaching this goal.
The Kiwi project is about writing a Scheme system on top of Truffle. Right now, I’ve a basic sexp reader, lambda
(flat lexical closures) and self tail-calls working.
Features to implement: hygienic macros, module system, more data types (arrays, strings, records, etc) and delimited control (unwind-protect, condition system, etc.).
Another thread of work is to leverage Kawa Scheme and build on top of that - the KLOS project is a port of TinyCLOS to run on top of Kawa with Dylan semantics. Once this is done, work can begin to port parts of DUIM and Deuce to Kawa+KLOS.
Of course, it’d be nice to eventually run KLOS natively in Kiwi.
I haven’t touch Noticias in almost a year, and perhaps it’s a good idea to just focus on this and get it done.
I’d say if I can run Don’s PS debugger, then I’ll consider the project done. That means getting enough of the canvas
operators implemented, getting the LiteUI
code loaded and doing the research to fill in the missing blanks in the implementation.
If Don & friends manage to find the source code to HyperLook, then it’ll take getting the TNT v2 toolkit working for HyperLook to run on Noticias.
The work of Noticias is basically to rewrite the existing canvas
code to use SVG
instead and setting up the dev inner-loop properly (actually quite tedious and annoying) in order for development to pick up joyfully.
I read Majjit LSP and it’s a really cool idea. It’s definitely a workable direction, and it’s doubly odd that it’s the dual to the CLIM/DUIM based UI idea. One way of achieving interactivity is to create a live surface (output recording) that stores presentations (this is CLIM), but this Majjit LSP inverts that and keeps the surface dumb (it’s just a text file), but you “rehydrate” the state off-thread inside the LSP server. You achieve interactivity by sending commands to the LSP server, and it reacts by re-rendering the plain text file.
I think for output is structured, there’s no difference between the two approaches – the advantage of CLIM is that you can do arbitrary output, free-form output, and still retain the state/interactivity, which will be hard to do the other way round.
I watched this Primeagen video and he talks about having discipline and I think that’s a good thing for me to focus on this year. I’d like to have more discipline when it comes to starting and completing my projects this year.