Well, I did end up starting a re-write of firn. I'm having a pretty good time! I'd say I'm about 30-40% done and have probably spent about ... 35 hours on it? It seems like a lot for a project (and I suppose it is), but the learning curve for rust has been steep
I'm back with another report on investigating core.async in Trunk. My thread on clojureverse has evolved quite a bit, with interested contributions, including some from the prolific and prodigious Borkdude (who has helped me on more than one occasion).
After fiddling about with `core.async`` in Trunk I decided it was time to reach out for some input. It was a good thing I did; I had reached a point where I was mostly poking at the functions I thought I understood in core.async, and wasn't really reading their API.
I'm thinking about re-writing Firn in rust. I'm not sure if I will do it, but I've been thinking about some of the more fundamental design decisions that I want to consider when building software. Firn is built in Clojure, with a touch of Rust for the org-mode parser, and then is all compiled down to a binary using GraalVM's native-image tool. It's working, so why re-write it?
I would really like to better understand Core Async with Clojure; specifically, I want to remove myself from callback hell to see if I can make my clojurescript backend for a new project a bit clearer.
My latest project is called Trunk. It's a tool inspired by an application called "Learning with Texts". Rather than go into what it is (see the wiki page), I'll talk a bit about the technical aspects of the project and why I decided to pursue it.