This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2019-05-03
Channels
- # beginners (111)
- # boot (1)
- # braveandtrue (4)
- # calva (2)
- # cider (16)
- # clara (35)
- # cljdoc (4)
- # cljs-dev (22)
- # clojure (80)
- # clojure-dev (17)
- # clojure-europe (3)
- # clojure-italy (57)
- # clojure-japan (1)
- # clojure-nl (4)
- # clojure-serbia (1)
- # clojure-spec (25)
- # clojure-uk (108)
- # clojurescript (67)
- # cursive (17)
- # data-science (5)
- # datascript (6)
- # datomic (6)
- # devcards (1)
- # events (1)
- # expound (13)
- # figwheel (2)
- # figwheel-main (6)
- # fulcro (7)
- # jobs-discuss (8)
- # kaocha (1)
- # luminus (3)
- # nrepl (6)
- # off-topic (58)
- # re-frame (1)
- # reitit (16)
- # remote-jobs (1)
- # ring (1)
- # shadow-cljs (70)
- # spacemacs (10)
- # sql (42)
- # testing (1)
- # tools-deps (8)
- # vim (1)
Didn't read the Cassandra paper yet, but just wanna ask if anybody knows, how Cassandra routing is performed AFAIU, Cassandra is a DHT. But there are different DHT routing strategies, e.g. storing O(logN) state and achieve O(logN) hops max to reach a node In Cassandra it is not done this way, right? It is still not centralized therefore there should be routing involved. How exactly is it performed?
See https://docs.datastax.com/en/cassandra/3.0/cassandra/architecture/archDataDistributeAbout.html Consistent Hashing in particular This SO question also contains a lot of good info: https://stackoverflow.com/questions/31669991/how-does-cassandra-find-the-node-that-contains-the-data
Consistent Hashing is clear. But this is about key partitioning, and is not related to routing
not really. E.g. hash(key) = 10 nodes = (3, 14, 33, 45) ring = 0, 63 If for the query I ask node 33 (because I only know this node, I am connected to it via driver, etc.) how does it route me to the node 14 which is responsible for the key?
in Chord it is done via finger table which stores the successors with exponential distance e.g. node_id + 2^i for i in range(m)
@lilactown RDF is used in several domains where linked data is important. It’s a standard. E.g. in medical domains it’s used a lot: https://id.nlm.nih.gov/mesh/
DBPedia is an example of a crowd-sourced body of linked data https://wiki.dbpedia.org/about
https://drevidence.com/ is a Clojure project doing really cool things with NLP and RDF to help patients navigate academic research journals.
(at least, I know part of its in Clojure)
And many Clojure projects seem to carry on the spirit of RDF, if not the name. Datomic cites RDF as prior art.
neat! I have a use-case where I started researching URI/URN and all of the surrounding stuff around it, and ran across RDF which I remembered being cited by Rich/Datomic/etc.
my specific use case is I have a named resource that I need to resolve to an actual location, and I want that location to be configured by some other party.
I was thinking I could use a URI/URN-like schema:
and hand that to a service which might respond with
or might respond with a next discovery://....
I see a RDF document as a little database of facts that uses URI to identify entities. The advantage over other formats like XML is that it's a bit easier to group multiple documents together. You still have to provide a semantic mapping between the RDF classes in your different documents but once it is done, you can use the same query language to query across several documents.
I keep thinking that something to do with clojure.spec + nav + RDF is going to be cool, I just don't know what for 😛
The holy-grail of distributed computing: dynamic orchestration of services 🙂 That would allow scaling without having developers wiring services manually everywhere.
@lilactown The HTTP protocol and URIs should support your use case. I don't know the details of your scenario but you can just create URIs and return a 301, 303, 307 HTTP redirect to another URI or a URL.
I’m kind of going back and forth on whether to use URIs or not. URIs on their face seem so simple and easy, but I worry about the fact that it’s difficult to encode additional context in them
GET parameters cover the non-hierarchical parts of a URI, no? And @me1740 isn't that the goal of Kubernetes and Knative?
I meant "semantic orchestration". Specify what services you need and have the platform dynamically find them.
Today I had to program in JS for the full day. It fells like breaking up with the one you love: it’s not there anymore yet still omnipresent.
My muscle memory remembers Clojure at unexpected places:
- I start function calls by typing (
then I pause to think.
- I write my objects with :foo
as json keys.
- I forget the ,
in my array literals.
- I want to add ?
at the end of Array.isArray
.
I did 2/4 of those on a js code challenge yesterday. It begs the question: is there a clojure library for generating code in other languages? It seems like any lisp would be particularly well suited to the task.
There is the clojurescript’s compiler
right but that treats the target language as an assembler, it's not really the most readable output. it would be cool to have a library where you specify maps from clojure syntax to the target language, then a macro works its magic.
I had this same exact experience, so I decided to try rewriting clojure.core in JS :rolling_on_the_floor_laughing:
Oh nooo I will be doing Java for a bit and cannot really tolerate the idea yet lol
@lilactown let us know if you publish it
Proposal: port CLJS to MAL (https://github.com/kanaka/mal) Why? Because MAL compiles to 75 backend languages, extending Clojure's reach
Plus, when those langs get ported to WASM, we'll be able to offload work to isolates hosting any of those runtimes - choosing those that best fit (semantics and libraries) for the given workload
Isn't MAL 75 different implementations of a subset of Lisp targeting different host languages, each with their own unique differences, intended for beginners at language implementation wanting to learn how?
for a lisp with a philosphy of embracing the host, targeting something that abstracts over multiple hosts, but doesn't provide much in of itself seems like maybe a misstep
there is no one size fits all for interacting with the native type systems for all the mal backends
MAL doesn't have much of an interop story AFAIAA, but it seems like that could be added and it seems orthogonal whether the core clojure semantics could sit within MAL's semantics. And incompatible interop between backends would be similar to the situation we have today with CLJ/CLJS
It seems like perfecting Clojure on Graal would be a more fruitful endeavor, no? That would provide industrial-strength language interop.
Any functional programming or Clojure podcasts someone could recommend? I realized I would like to be drinking more of the kool-aid.
defn radio is fun
Also, Eric Normand is great. https://lispcast.com/category/podcast/
Stuart Sierras new podcast No Manifestos is good