æ/Isogeny
Isogeny makes all configuration dynamic.
Isogeny makes all configuration dynamic.
Clojure, like other JVM languages, excels in long-running tasks1. But I was always jealous of the languages that I'd used for scripting and command line tools which can't wait a second for a JVM to start for each invocation. Despite its slow startup time, the JVM shines at peak throughput. Some times we want one, sometimes the other. For tasks that have a very short lifetime (~1s), we need Ahead of Time compilation....
I use Clojure's threading macros perhaps more than I should, but I do so because they mimic the way I think about the code I write. A lisp programme is a tree and yet most of the programmes that we write are, or should be, lines of functions acting on a datastructure1 2. The value of threading macros 1 2 (* 3 (+ 2 (- 10 (+ 10 (/ 2 2))))) ^ To grok this code I have to start from the bottommost leaf, in this case (/ 2 2), yet it is at the line's far right contrary to where it is natural for me and most of the world3 to start reading....
Dodge a Clojure bug by using Java and tools.build
Macros that makes namespace aliases easy. https://github.com/aelfsyg/alias-ns.git Qualified keywords have ballooned in popularity since the release of spec with Clojure 1.9. And thankfully so! A creed amongst Clojurians is that maps should be open to modification, meaning that I should be able to add data to a map without worrying that it will break its consumer, and that when processing maps we shouldn't remove data using something like select-keys without good reason....
See things from another perspective; Clojure functions that build datastructures from events.
You don't understand a pattern until you can implement it — domain-driven design, CQRS, event sourcing.