Juji, an AI-driven conversational technologies company, has made an open-source
contribution to the world with
Datalevin, a versatile, lightweight, and
fast embedded database engine. In addition to being powered by the Datalog query
language, it also acts as a Clojure native Key-Value (KV) store. This transactional database solution is agile and dynamic, suitable for handling complex data structures.
In my Clojure/north 2020 talk on "diffing-based software architecture patterns", I mentioned that Juji is using Editscript, a library I developed, to diff Clojure data structures. During the Q&A session of the talk, someone brought up another Clojure diff library, called deep-diff2, which I was unaware of. Then on Youtube, a comment asking the difference between Editscript and deep-diff2 appeared again. This prompted me to do an investigation on Clojure data diff libraries. Given how the Clojure community places such an emphasis on data oriented programming, a comparison of data diff alternatives appears to be of interest.
We all know that user interface (UI) development is an iterative process. It is important that we can iterate quickly based on user feedbacks. At Juji, we have been constantly searching for solutions that enable faster iterations for our Juji Studio product. Around the end of last year, we did a major revamp of Juji Studio UI. By all accounts, this change made a huge difference in term of usability of Juji Studio. More importantly, we can now iterate much faster than previously possible. What's more, we did the wholesale changes in less than one month! Here is how we did it.