This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2020-07-09
Channels
- # announcements (2)
- # babashka (33)
- # beginners (122)
- # bristol-clojurians (1)
- # calva (6)
- # chlorine-clover (3)
- # cider (45)
- # clara (10)
- # clj-kondo (3)
- # cljsrn (17)
- # clojure (80)
- # clojure-dev (21)
- # clojure-europe (86)
- # clojure-italy (5)
- # clojure-japan (5)
- # clojure-losangeles (7)
- # clojure-nl (5)
- # clojure-portugal (3)
- # clojure-uk (31)
- # clojurescript (30)
- # conjure (4)
- # core-async (29)
- # cursive (20)
- # data-science (25)
- # datomic (7)
- # duct (17)
- # figwheel-main (73)
- # fulcro (23)
- # jobs-discuss (36)
- # juxt (5)
- # kaocha (2)
- # lambdaisland (6)
- # luminus (5)
- # malli (17)
- # mount (10)
- # music (7)
- # off-topic (16)
- # re-frame (30)
- # ring (17)
- # rum (1)
- # shadow-cljs (10)
- # spacemacs (10)
- # specmonstah (4)
- # sql (45)
- # tools-deps (21)
- # xtdb (20)
I saw a 9 months old video of a presentation of Crux, and notice the recursive Z pattern used to serialize a 2D time space into a 1D index. It's funny because the same pattern was used by Graphic Cards to store textures in order to minimize the memory cache misses, transforming a square of texture into a linear piece of cache entry.
you will recognize the z pattern of the figures in this paper.
I also saw a preview of the GUI in that video, and it's impressive. Crux rocks!

This was new to me https://neilmadden.blog/2018/08/30/moving-away-from-uuids/ and the author recommends to use secure random 160 bit strings like Xl3S2itovd5CDS7cKSNvml4_ODA
. The recent support for string based id is a nice because of this alloned. I wonder if crux should support or advocate for “secure random 160 bit id” in a more prominent matter.
Guess there are different use cases and different requirements for IDs 🙂 I don't want to judge what Crux is supposed to recommend, but in this context I can recommend this article:
https://segment.com/blog/a-brief-history-of-the-uuid/
ksuid
can definitely also be an attractive alternative, depending on the use case of course 🙂
Unguessable IDs are certainly interesting from an authorisation perspective (e.g. capability-based security) - I hadn't considered that string IDs open up new options but it makes sense.
Thanks for sharing! I’ve seen cases where an UUID is used as a security token, but the validation period was less than a minute and the number of tokens a second would never reach a million. And there might have been other restrictions like IP restrictions. Blindly relying on random token generation because the industry says it’s ultra random is very naive. Also as a general case just relying on a secure random 160 bit will in some (future) cases be naive. So I would not start to advocate and saying this is good or bad in general. People should do their own math. @U054UD60U article should help people remind to do this though!
@U0FT7SRLP regarding guessing one shout always take the option into account to temporarily block a resource after a sufficient number of guesses. (This has drawbacks, on it own, though)
Yeah maybe rate limiting is a good practise in general. (Who needs to call a remote API more than X amount of times a second)
I’m still toying with crux on dynamodb/s3, and have been consistently hitting this error:
10:01:35.482 [crux-tx-consumer] ERROR crux.tx - Error consuming transactions
java.lang.AssertionError: Assert failed: 0400b444ac06613fc8d63795be9ad0beaf55011936ac
(= (+ c/index-id-size c/id-size Long/BYTES Long/BYTES Long/BYTES) (.capacity k))
at crux.kv_indexer$decode_entity_PLUS_vt_PLUS_tt_PLUS_tx_id_key_from.invokeStatic(kv_indexer.clj:247)
I’m not sure where to look for what is causing this (tx log? doc store? kv store?)Have you upgraded over the 1.8.x -> 1.9.x range with this node, or is this with a clean node?
Hmm. :thinking_face: it'll be in the kv-store - 04...
is one of the bitemporal indices.
I’m gonna try starting completely from scratch one more time, the code will all be in github shortly
this was my fault; the iterator I’m developing (https://github.com/csm/crux-kv-hitchhiker-tree/blob/trunk/src/crux/kv/hitchhiker_tree.clj) doesn’t work correctly