These images are awesome. You should do some in mapillary.com and try it out (monitored by Riemann :)
/peter
PW, on
Grammatical mistake within first 4 words:
So there’s a a
Chris, on
This is absolutely amazing work. Thank you very much! I’m finally coming to grips with lisps, and specifically clojure. Please do keep it up, and let me know when I can get the book!
Katherine McCartney, on
Hi Dave. I just had a neighbor take down a 100 ft Douglas Fir fine grade 50 year old tree. Although heartbreaking it’s boughs were falling and destroying cars and garages. I was lucky enough to get a 3 inch round from the thickest part of the sizable trunk and it’s diameter is about 4.5 feet. It’s outside right now, it was cut last week. I wonder if you have any tips for me in terms of drying it so that it doesn’t crack? It has a hairline crack in it already.
Gopal Patwa, on
Indeed great article, since ES 2.0.0 beta 1 is released. It is possible with 2.0.0 release this issue might resolve.
Magnus, on
How would the result be affected if you run Chronos controlled by Maraton? I think that is the recommended way by many and helps to recover from some failure states.
tim, on
Keep the awesome tests going.
Something must work!
Aphyr, on
Compared to SQS? Well, as far as I know SQS isn’t in the habit of throwing away data when a partition occurs, but I don’t have any solid evidence there since I can’t test SQS’s internals. :)
darkfader, on
Thanks, I had so much fun reading this!
Jeff, on
Hi Kyle,
Thanks for the amazing clojure tutorial; I’m really enjoying it so far!
One question about the complex problem at the end of this one: I’m pretty sure that in your solution, you’re taking the first 1000 pairs of odd integers rather than pairing the first 1000 odd integers. From my understanding, the solution to the problem as stated should read:
How does this compare to Amazon SQS in terms of durability?
Ian Miell, on
This is a fantastic post. Thank you.
Ian
EthanMellor, on
This information is very useful for theoretical studies.
YellowApple, on
Here you go: Tue Aug 18 12:11:14 PDT 2015
Charlie HOover, on
I need a date ! help!
Aphyr, on
Cassandra also claims to offer monotonic read consistency, which means that if a client has seen any particular value for a key, it will never read an older value.
See the linked Jira ticket for a more thorough discussion.
tribeca, on
What does “monotonically consistent” even mean?
Zaar, on
Do you have plans to review the new cluster model in Redis >= 3.0?
Kenneth R. Beesley, on
Trying to sort out delay, future and promise, I came up with the following summary. Please correct as necessary.
delay
The delay definition specifies code to set/bind the identity, but
it doesn’t execute that code.
When the delay is dereferenced, only then is the code is executed,
and the dereference will effectively need to wait/hang until that
code is finished. The result of the dereference is cashed, so if the
identity is dereferenced again, the previously computed result is
simply looked up and returned.
future
The future definition specifies code to set/bind the identity, and
it creates a thread and immediately starts executing the code in
that thread. When the identity is dereferenced, the execution will
have to wait/hang if and only if the code launched in the thread has
not yet terminated.
promise
The promise definition does NOT specify code to set/bind the
identity; it simply creates an “empty” promise, with the assumption
that some other code somewhere/somehow will ‘deliver’ a value to
that identity. The deference of the promise identity will have to
wait/hang if and only if a value has not yet been ‘deliver’-ed to
the promise.
Kenneth R. Beesley, on
On the issue of swap!, when the indicated function’s operation is not commutative, it might be useful to point out that the old value of the atom is used as the first argument to the function. E.g. in the example
(def x(atom1))(swap!x+ 12)
it doesn’t matter if the old value of x is used as the first or last argument to + because + is commutative. But in
(def x(atom4))(swap!x- 12)
using the - function/operation, the old value of x is definitely used as the first argument to 1, and the resulting value is of x is 1, e.g.
(swap!x- <oldvalueofx>12)
Kenneth R. Beesley, on
Oops. Code disappears. Let me try again with a marked up Clojure code block. First try:
Let me first repeat that you explain Clojure with remarkable skill and readability. You should definitely write a book.
On one little point, the following example might be a bit misleading:
The output is shown as: #{0 1 2 3 4 5 6 7 8 9}, which might imply that order is maintained. Earlier in the presentation, it is stated that “All updates with swap! complete in what appears to be a single consecutive order.” However, sets being sets, the order of elements is insignificant, and the output may appear different when printed.
AgasthyaH, on
Thank you for the excellent and invaluable series. Just wanted to point put a philosophical irony ( unrelated to your series ). That is that most sources which teach about functional programming paradigm use a procedural paradigm :)
Alex, on
This is by far the best explanation of how and why things behave in Clojure. Thank you a lot for all your work and keep going!
Betty, on
Hi guys,
Here are my solutions to the problems. Hope some of you find them helpful.
Have to write another enthusiastic post. The doc and source macros finally make me understand how awesome it is that code is data. I’ve explored some Clojure before but this is the first introduction that makes this concept so clear so early on. Thanks so much for sharing this!
Martijn, on
One of the best reads on Clojure I’ve seen. Hope you’ll finish the book some day.. would definitely buy it.
dave, on
Am dave would like order(walnut slab)Kindly list the price and sizes you in stock or provide me the website for me to choose my kind of walnut slab ,also what type of payment do you accept.
Jean-Francois Contour, on
Since this issue is related to in-flight documents. Do you think there is a risk to loose existing document during primary shard relocation (cluster rebalancing after adding a new node for instance )?
Ashutosh Pandit, on
This is how tutorials should be. Precise and crisp!
Thank you! This is my official “learn clojure in 3 days” guide :)
William, on
love this post, im trying to determine which DB to use and was wondering your thoughts on amazon aurora?
Duy Do, on
Thanks for the article. Can you run this with Elasticsearch 1.6?
These images are awesome. You should do some in mapillary.com and try it out (monitored by Riemann :)
/peter
Grammatical mistake within first 4 words:
This is absolutely amazing work. Thank you very much! I’m finally coming to grips with lisps, and specifically clojure. Please do keep it up, and let me know when I can get the book!
Hi Dave. I just had a neighbor take down a 100 ft Douglas Fir fine grade 50 year old tree. Although heartbreaking it’s boughs were falling and destroying cars and garages. I was lucky enough to get a 3 inch round from the thickest part of the sizable trunk and it’s diameter is about 4.5 feet. It’s outside right now, it was cut last week. I wonder if you have any tips for me in terms of drying it so that it doesn’t crack? It has a hairline crack in it already.
Indeed great article, since ES 2.0.0 beta 1 is released. It is possible with 2.0.0 release this issue might resolve.
How would the result be affected if you run Chronos controlled by Maraton? I think that is the recommended way by many and helps to recover from some failure states.
Keep the awesome tests going.
Something must work!
Compared to SQS? Well, as far as I know SQS isn’t in the habit of throwing away data when a partition occurs, but I don’t have any solid evidence there since I can’t test SQS’s internals. :)
Thanks, I had so much fun reading this!
Hi Kyle,
Thanks for the amazing clojure tutorial; I’m really enjoying it so far!
One question about the complex problem at the end of this one: I’m pretty sure that in your solution, you’re taking the first 1000 pairs of odd integers rather than pairing the first 1000 odd integers. From my understanding, the solution to the problem as stated should read:
(reduce + (map (fn [pair] (* (first pair) (second pair))) (partition 2 1 (take 1000 (filter odd? (iterate inc 0))))))How does this compare to Amazon SQS in terms of durability?
This is a fantastic post. Thank you. Ian
This information is very useful for theoretical studies.
Here you go: Tue Aug 18 12:11:14 PDT 2015
I need a date ! help!
See the linked Jira ticket for a more thorough discussion.
What does “monotonically consistent” even mean?
Do you have plans to review the new cluster model in Redis >= 3.0?
Trying to sort out delay, future and promise, I came up with the following summary. Please correct as necessary.
delay The delay definition specifies code to set/bind the identity, but it doesn’t execute that code. When the delay is dereferenced, only then is the code is executed, and the dereference will effectively need to wait/hang until that code is finished. The result of the dereference is cashed, so if the identity is dereferenced again, the previously computed result is simply looked up and returned.
future The future definition specifies code to set/bind the identity, and it creates a thread and immediately starts executing the code in that thread. When the identity is dereferenced, the execution will have to wait/hang if and only if the code launched in the thread has not yet terminated.
promise The promise definition does NOT specify code to set/bind the identity; it simply creates an “empty” promise, with the assumption that some other code somewhere/somehow will ‘deliver’ a value to that identity. The deference of the promise identity will have to wait/hang if and only if a value has not yet been ‘deliver’-ed to the promise.
On the issue of swap!, when the indicated function’s operation is not commutative, it might be useful to point out that the old value of the atom is used as the first argument to the function. E.g. in the example
(def x (atom 1)) (swap! x + 1 2)it doesn’t matter if the old value of x is used as the first or last argument to + because + is commutative. But in
(def x (atom 4)) (swap! x - 1 2)using the - function/operation, the old value of x is definitely used as the first argument to 1, and the resulting value is of x is 1, e.g.
(swap! x - <oldvalueofx> 1 2)Oops. Code disappears. Let me try again with a marked up Clojure code block. First try:
(def xs (atom #{})) (dotimes [i 5] (future (swap! xs conj i))) @xsThe output is shown as
#{0 1 2 3 4 5 6 7 8 9}which might imply that the order is preserved.
Let me first repeat that you explain Clojure with remarkable skill and readability. You should definitely write a book. On one little point, the following example might be a bit misleading:
(def xs (atom #{}))
(dotimes i 10))
The output is shown as: #{0 1 2 3 4 5 6 7 8 9}, which might imply that order is maintained. Earlier in the presentation, it is stated that “All updates with swap! complete in what appears to be a single consecutive order.” However, sets being sets, the order of elements is insignificant, and the output may appear different when printed.
Thank you for the excellent and invaluable series. Just wanted to point put a philosophical irony ( unrelated to your series ). That is that most sources which teach about functional programming paradigm use a procedural paradigm :)
This is by far the best explanation of how and why things behave in Clojure. Thank you a lot for all your work and keep going!
Hi guys,
Here are my solutions to the problems. Hope some of you find them helpful.
1.
(defn palindrome? [x]
(= (seq x) (reverse (seq x)) ))
2.
( (frequencies (seq “abracadabra”)) \c )
3.
(defn my-filter [f x] (reduce (fn [output element]
(if (f element) (conj output element) output ) ) [] x ))
4.
(defn isprime? n) (range 2 n)))))
(take 10 (filter isprime? (iterate inc 0)))
Have to write another enthusiastic post. The doc and source macros finally make me understand how awesome it is that code is data. I’ve explored some Clojure before but this is the first introduction that makes this concept so clear so early on. Thanks so much for sharing this!
One of the best reads on Clojure I’ve seen. Hope you’ll finish the book some day.. would definitely buy it.
Am dave would like order(walnut slab)Kindly list the price and sizes you in stock or provide me the website for me to choose my kind of walnut slab ,also what type of payment do you accept.
Since this issue is related to in-flight documents. Do you think there is a risk to loose existing document during primary shard relocation (cluster rebalancing after adding a new node for instance )?
This is how tutorials should be. Precise and crisp! Thank you! This is my official “learn clojure in 3 days” guide :)
love this post, im trying to determine which DB to use and was wondering your thoughts on amazon aurora?
Thanks for the article. Can you run this with Elasticsearch 1.6?