Fork me on GitHub

💸 Clojurists Together is going to be funding four project $9,000 each over 3 months. 💸 See what kinds of projects our members want us to fund at, and apply by January 15th at

👍 72
moneyparrot 44
calva 12

spartan.spec: an implementation of clojure.spec.alpha that can be interpreted by and used with babashka:

👍 52
Filipe Silva16:01:31

Heya, just wanted to let you know that datafire is now available as 0.1.1 at It lets you persist Datascript databases in Firebase's Firestore. Supports offline usage and multi-user synchronization. You can use Firestore Security Rules to limit access. If you're persisting Datascript and this fits your usecase let me know, and also let me know if you've been looking for something like this but with more features. Very interested in how this setup can be pushed further.

👏 44

Nice work! On startup does this have to transact in all the available data, or does it use from-datoms?

Filipe Silva17:01:16

it replays all previous transactions in order

Filipe Silva17:01:20

so it keeps history


OK; That could get expensive as number of transactions build up. It's much more efficient if you can rehydrate from a collection of datoms. That may be challenging with firebase as a backend, but maybe there's a way to do it?

Filipe Silva17:01:50

I haven't thought very hard about it, but maybe

Filipe Silva17:01:09

that version mainly supports transaction level granularity

Filipe Silva17:01:29

meaning it persists opaque transactions

Filipe Silva17:01:47

I was thinking of supporting datom granularity, thus persisting datoms (opaque or not)


Yeah, semantically that is nice (storing transactions). Clear conceptual model.

Filipe Silva17:01:21

but ran into a roadblock where firestore is actually really slow when offline is on and loads of small docs hit it

Filipe Silva17:01:53

going to datom granularity might also enable views and entity based security rules

Filipe Silva17:01:04

but I wanted to understand usecases better before trying to figure out the firestore slowness

Filipe Silva17:01:44

I hadn't considered conn-from-datoms very much before you asked though

Filipe Silva17:01:28

but if there's datoms available, and there's a mapping from the firebase ordering to the local ordering, I think it would help

Filipe Silva17:01:13

the mapping will always be necessary because only the server has the real order, and it's actually very hard to just get a monotonically increasing number on firestore

Filipe Silva17:01:31

so the server uses nanosecond precision timestamps... which unfortunately lose precision when coming over

Filipe Silva17:01:00

the offline model also doesn't cater very well to a transaction based CAS number either, so it's for the best

Alex Miller (Clojure team)16:01:08

Have you completed the State of Clojure 2020 Survey yet? If not, take 8 minutes and complete it here: - thanks!

Alex Miller (Clojure team)17:01:51

If you've already taken it, can you post it in your local Clojure meetup or company slack room? That would really help to spread the word.


🎉 I’m happy to announce a new major version of Compound Compound is a library to help maintain indexed data in reagent/re-frame apps. It works with maps to make debugging and inspection easy. The new version (compound2) is not backward compatible, but improves on the original in a number of ways - it’s faster, has a simpler api, and is less impactful on your bundle size. Hope you find it useful!

🎉 52
❤️ 4
👍 8

@U051H1KL1 I've opened a PR to add it to clojure-toolbox ... if you can think of a better category than "Databases", please lmk.


Also, might be worth adding some github topic tags so it shows up in


@U08BW7V1V ah thanks for that 🙂 good idea with the topic tags, I didn’t even know they were a thing