I think the difference is that if you say those things at a Republican rally you know what you're getting into. The thing that I think is really off-putting about a certain brand of political correctness (which include the post by puranjay) is when well-meaning people with no ill-intention are chastised as ignorant at best, bigots at worst. For example the post by puranjay, what exactly does he want? It's not reasonable to expect everyone to know everything about every other culture. It's just going to make people resentful.
I'm in the first camp of looking up every word you don't know. In my opinion speed reading doesn't do much for you if you don't know enough words. I saw an article that explained how fast our comprehension drops when there are words we don't understand in a sentence. This was done by using a slider that would hide a percentage of words in an English paragraph. Basically if you know about 90%+ of the words you can understand everything, but things drop off very quickly from there. Once you have no chance at understanding the thing you're reading I think the benefits of having read it are marginal compared to just looking up the words you don't understand.
One thing I'm still confused about. What exactly is happening when you copy paste some text from one app to another? What encoding will the copied text be in?
The biggest difference in thinking comes from the concept of signals. Initially when you hear that a signal is a value that changes over time it doesn't seem all that different from setting the state on an object. But actually a signal is more like an array in that it's also a collection of values except it's a collection of values over time. And crucially, like an array, a signal can be mapped over. If you look at the last line you see that 'main' is a signal of Elements, which we can assume is some type that elm knows how to display in the browser.
So a single instance of Element can be thought of as the browser's displayed state at a single point in time, in this case a single frame of the ship's movement animation. Each subsequent Element in the signal can be thought of as a transition from one browser state to the next, or from one animation frame to the next.
Now the key is that each Element in the Element signal is being mapped 1 to 1 with a Ship in the Ship signal. (The Ship signal is the return value of 'Signal.foldp update initShip inputSignal') In fact the whole application can be thought of as a transformation on an initial Ship and a signal of keyboard inputs, to producing a signal of Elements.
So in building this app the thought process might be that I first create an initial Ship and a signal of keyboard inputs to start. I want my app to update at 30fps, so I create a signal that samples the keyboard inputs signal at this interval. Now from this input signal I want to produce a signal of updated Ships. From the signal of Ships I want to produce a signal of Elements.
Finally you can see everything come together at the end, and it is quite descriptive. You want a signal of Elements. What is a signal of Elements? It is a mapping of a signal of Ships over the show function. What is a signal of Ships? It is a signal of inputs foldp'd over an update function (which gets passed the input and the most recent Ship). What is an input signal? It is a sampling of the user's keyboard inputs at a 30fps interval. Etc.
So we end up with descriptive functional code. There are no statements here, no loops, and no mutation, which means that we don't need to coordinate the order of execution with changes in the state of objects, which is a huge step forward in reducing the complexity of a program.
An interesting thing I've noticed about language learning is that it is different from most skills in that the vast majority of its practitioners are basically expert level. Learning a new language is uncommon enough that I rarely met other people who had spent the same amount of time learning the same language as me. So you end up judging yourself by an internal sense of progress, by the things you can and can't do. This is sort of like if you were learning to play the piano and everyone else but a few dabblers were playing at or near the level of Mozart. Also interesting is that language learners are always a master of at least one other language, so you inevitably compare yourself in that way also. It can really skew your expectations.
Also a lot of times in language learning is sort of all our nothing. Comprehension drops very fast or each additional thing you don't understand in a sentence. So progress can feel very slow and then suddenly you have a big jump in understanding.
Can someone explain what problem this solves that just using flux can't? I'm having trouble understanding how a tree structure is useful, because I can imagine different actions affecting different stores in different orders. So I wouldn't want changes to only bubble up, sometimes I would need them in the other direction.
I found David Nolen's talk at React conf useful in understanding the motivation for cursors. https://www.youtube.com/watch?v=5hGHdETNteE. See in particular starting around 15:40. Cursors are used when you are strict about global immutable state; whereas Flux (like React itself) is agnostic about this. IMO this agnosticism means you end up with a more complex architecture. David's point in the video is, even with cursors and immutable state atoms, you end up with a parallel set of complications to deal with -- around questions of inter-component communication across nodes of the tree and information hiding. He sketches Om's current solution to this using observable cursors which kind of let you trace data-change dependencies between components - but I have to say without understanding Om better it's a bit hard to follow.