1,361 karma · joined June 14, 2010
To take the example on the page of restaurants - I'm probably not going to learn about any new restaurants if my friends and I mostly go to the same restaurants, and they go to the same ones with their friends, too.
Parallelism = splitting up subtasks that don't depend on each other. If the tasks don't depend on each other, the things doing them shouldn't need to talk. If you have enough processors, you can do almost everything at once, so the algorithm is only as slow as things that actually need to be done in order (asymptotic efficiency).
In imperative programming, we tell the computer what order to do things in, so it doesn't know what actions don't depend on each other - to parallelize, we have to worry about concurrency. In functional programming, the compiler knows what depends on what (what uses the result of something else), so it can parallelize things that don't depend on each other. It might be implemented with concurrency, but the programmer doesn't need to worry about it.
Edit: Something I hadn't thought of - you mention "rivers of space" - aligning code might make it harder to read for coders with dyslexia: http://uxmovement.com/content/6-surprising-bad-practices-tha...
Regarding your point about unsigned types - If I'm remembering correctly, "Writing Solid Code" had a section about exactly that - nasty bugs caused by things like looping over unsigned integers in reverse.
http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hyperte...
Yes. Makes code easier to read and makes it easier to refactor if you use an editor with column select/multi-line caret.
That said, I can't disagree with your last point - it's probably at least a little embellished.
For someone who's done some functional programming before, Real World Haskell is probably a good starting point; otherwise something like YAHT would probably be better.
For-loops are still suitable for actions (which mutate state or for some other reason need to be evaluated in order) - you see this in Haskell, too, though, with Control.Monad's forM_ and the like.
In short, Customs covers counterfeit, which extends to IP rights. Not saying I agree with it, but that seems to be the justification.
Also, according to the Japanese Wikipedia article, the first camera phone was DDI(Wilcom)'s VP-210 in 1999, and they exploded in popularity with Sharp's J-SH04 on J-Phone(Softbank) in 2000.[1] The US, by contrast, got their first camera phone in 2002.
Edit: Also, lack of Live TV is a big one for businessmen who are sports fans. Lack of a FeliCa reader might be an issue for some people, but probably not a deal breaker, since most people probably also have SuiCa, PasMo, IcoCa, or Edy cards.
They successfully marketed cameras, infra-red transfer, mobile internet, and QR code scanners to high school and college girls (the most profitable demographic in Japan to sell to). Without that, the other issues likely wouldn't have mattered.
Not to be nitpicky, since your overall point still stands, but I'd argue that it's better to use a mathematical abstraction (modulo) than an optimization that's dependent on the way the data is stored (bitwise operations), particularly when the compiler will probably optimize it away anyway.
His point is that the system of individuals acting to maximize their own benefit, because of the way that "benefit" is defined, favors entrenched players, even if it wasn't supposed to - no conspiracy necessary.