The main feature that Clojure provides for concurrency is immutability, not just the possibility of using existing data structures in an immutable manner, but an entire suite of immutable data types and data structures. This makes concurrency, even using Java's primitives, like Thread, (which was the original way Clojure was intended to be used anyway,) with Clojure's data structures is a win over using Java's if you want safe, predictable behaviour in a concurrent program.
Thanks, skimming through clojure's website it mentions that Clojure simplifies multi-threaded programming in several ways. Because the core data structures are immutable, they can be shared readily between threads. which is exactly what you said, I though its concurrency features where emphasized more on its refs stuff(refs, agents) or futures, delays, promises. Also reading that clojure being hosted is a feature then I guess leveraging the host is idiomatic, (using Thread or other concurrency APIs).
Can you elaborate on why using Thread was the intended way to use Clojure for concurrency?
These are more than just some ancient manuscripts. These are scripts that somehow survived the most comprehensive cultural and intellectual cleansing in known history. The Qin emperor purged China of ideas he found distasteful and for over 2 thousand years, those ideas have remained purged. These manuscripts partially change that.
We considered a GitHub profile as gender neutral if all of the following conditions were met:
- an identicon (rather than a profile image) was used,
- the gender inference tool output a ’unknown’ for the user’s login name and display name, and
- none of the panelists indicated that they could identify the user’s gender.
Across both panels, panelists inspected 3000 profiles of roughly equal numbers of women and men.
Given that acceptance rates dropped for both men and women when this method determined that a user was not gender-neutral, I wonder if use of a profile picture or real name is the real killer here. Perhaps the kind of person to include identifying information in their Github profile is less likely to have good pull requests? More likely, perhaps having any identifying information at all gives people an excuse to reject your pull requests? That would explain why there was a drop for both sexes but a slightly stronger one for women. If you are identifiable from your profile image or name, people are more likely to reject your PR on the bases of your ethnicity, appearance, religion, or gender, with gender being only a part of the effect.
That's incorrect. The study identified the gender of the Github users twice. They got their 'canonical' gender for users using your method (and removed from their sample users who could not be identified with this method,) but later to figure out whether a user's gender was identifiable, they used the Github user's own profile.
Non-Google+ users were not analyzed at all. That could possibly still influence the results, but not the way you are suggesting.
Only 35% percent of the accounts have their gender listed in a linked Google+ account. Checking someone's social media profile is a relatively sure way of automatically determining the gender of a lot of people. The authors did use another automated tool to see if they could figure out the gender of users from their Github profile as well, which is something they needed for the second part of their analysis. They don't specify how accurate that procedure was, so it's possible that they are more accurate than you think.
Of course, there is still the issue that they have effectively limited their sample to people with Google+ accounts which may affect the results of the study. Given that men's acceptance rate also dropped when their gender was identifiable (but not by as much) gives credence to the idea that there might be a flaw in their Github profile analyzer.
It's interesting that Yegge places Clojure into the 'conservative' camp whereas the author of this post places it into his equivalent of the 'liberal' camp. Personally, I think that says more about Yegge than the author of this piece, but I suspect that it might also say that the distinctions that each is making might be subtly different.
When I write Clojure I tend not to worry too much about this. Most of my variable names will be declared with `let` and will have a very limited scope. I can go ahead and clash some builtin function name and not worry about it unless I happen to need that builtin function within the `let` block. It usually is the case that I don't need to.
Locally overriding builtin/global functions seems like a bug waiting to happen. There's no way to figure out if you actually intended to use the local variable inside of scope, or the function it overshadowed. It seems to me that in Lisp-1 all local variables should be prefixed with some sort of symbol so that they can never override globals.