Datomic and Content Addressable Techniques(latacora.com) |
Datomic and Content Addressable Techniques(latacora.com) |
More generally, while I can maybe understand what they're doing, it's hard to imagine how to QA it in a way that's convincing to customers without a lot of data/compute/coverage analysis.
Unordered hashes made more sense for arbitrary Clojure data structures where the keys might be complex compound objects, but once we're in the land of datoms with finite value data types it's pretty easy to enforce a consistent ordering.
(disclaimer: I wrote much of the feature and post)
Given that any (simple) object has a unique c.a. identity, even anonymous (and unordered) containment in the parent object provides a key, that is k->k, with implicit order over {K} in the domain of keys (say ascending sort on k0..kn). As you obviously know, there are various schemas for that, such as "objspace://oid/<value-hash>". By definition, that is a bounded domain, with the same cardinality as the hash space. So then there remains the matter of nesting (aka trees) in which case unique identity of the parent is recursively computed as we walk up the tree from the leaves.
Re: QA: can you say a bit more about the type of coverage you're worried about? Is your concern that we'd be missing APIs, or that the storage format itself breaks, resulting in fact elision? payne (the underlying project) has a borderline obnoxious amount of tests, but that doesn't mean we didn't miss anything :)
Customers of this sort of security consulting are largely uninterested in the security as much as the audit report that allows them to say to their customers and incestors “we had these security professionals look at our stuff and this is what they said”.
As cofounder of Couchbase I got to meet Rich Hickey, whose work was a big inspiration to Fireproof.
Content addressing makes causal consistency easy to implement. We are fast approaching readiness for consistency checks and ACID characterization.
We already wrote a high level blog post here: https://www.latacora.com/blog/2023/11/01/our-approach-to-bui... -- but the one I'm hoping to write is more of a case study.
We are writing a trading system for a small broker company in Clojure/ ClojureScript with a Datomic centered backend. The previous company some of us on the team worked at had the code-base also in Clojure/ ClojureScript.
Schemamap.io has a declarative SQL compiler and backend implemented in it, solving Postgres database syncing.
Extremely happy going with Clojure!
category: edit-distance-two
For example, right now, I can only see ~50 LinkedIn EU Clojure ads. A dozen more mention Clojure but it does not seem to be the main focus of the job.
Would love to be proven wrong, though. Perhaps these jobs are sometimes not advertised via LinkedIn.
I do have a concern though. I see that at lots of companies the job is not a Go job or a Python job or a Javascript job, but a Go-at-Foocorp job or a Python-at-Bazco job or a Javascript-at-International-Clowns-Inc. job. What I mean is that the team have built so many leaky abstractions atop the core language, and added so many third-party tools, that the learning curve is steep and the skills non-transferable. On the one hand, who cares? We’re human, we can learn. But on the other it means that it can take significantly longer to ramp up and start delivering value than one would prefer.
What’s this have to do with Lisp? Well, while a well-written Lisp system will be faster to pick up and get started on that one in a less-powerful language (i.e., almost all of them), a poorly-written mess will be much, much slower. My concern is that I might leave a pretty good situation for what ends up being a dumpster fire — and then have to find a new job too quickly.
Developing good non-over-engineered abstractions is hard. But with Lisp it's a bit easier.
Some places do abuse macro DSLs and you can end up, as you said, working on a local language with no transferable skills.
I've been looking around for a junior with a passion for Common Lisp, but I have _no_ idea where to find one, especially in Germany (job's remote, but I'm currently not able to hire FTEs outside the country).