> Meanwhile, East Africans routinely monopolize gold medals in the long distance events ( 10,000 meters, marathons). Can you think of any non-genetic explanation for this?
Elevation, and sheer numbers. Kenya is at elevation, and people are poor, so there are thousands upon thousands who get into long-distance running hoping it will be a way "out". Of course living at elevation does lead to genetic changes as well (e.g. Tibetans), but you can't discount the effect of much larger numbers of people to choose from for a given discipline.
Jet Li is representative of the best in China, not of the average Chinese person. African-Americans enroll in sport at a very high rate. Combine widespread economic disadvantage with a "cultural" push toward sport or entertainment and there's a bigger talent pool to choose from.
As for sprinting vs. long-distance running, sprinting requires more muscle and hence a more concentrated diet. And, generally, steroids. Kostas Kenteris didn't break 10 seconds for the 100m (10.15) but did do the 200m in 19.85 which means he ran 100m of it in less than 10s. The West African link is a cultural artifact of U.S. slavery. "Blacks" of West African descent are also of "white" descent. (Note that modern West Africans are not setting sprinting records.) Greater physical capabilities are a byproduct of an inhumane "sorting" or "filtering" system that killed large numbers of slaves through physical hardship. Not to mention the distasteful but real application of selective breeding to slaves by slaveowners.
So, yes, there are genetic differences -- but there always are between different people. The biggest factor IS environmental. For proof of that, consider how strong and muscular you COULD be if you dedicated your life to it instead of sitting at a computer all day. For most sedentary people you can easily be in better shape at 40 than you were at 20 simply by working at it instead of playing video games. Your genetics determine certain kinds of potential, but when it comes to brain genetics, it's not clear what potential really means; you may create something incredible even though your numbers on a test weren't as good as someone else's. Interest and enthusiasm that lead to sheer dedication get you farther than mere intelligence, because there's always so much work to be done.
And then there's the ever-popular, "if you're so smart, how come your life sucks?"
Dang it, I had this same idea a while back, except with pre-loading the pages so you can mouseover titles on the left and the story instantly pops up on the right.
This would help get through Reddit way faster -- just slowly move the mouse downward and zoom through all the [PIC] and misleading title submissions.
> When the founding fathers penned the bill of rights, speech meant speech. Not intrusive speech, and not published, internationally accessible works.
First Amendment:
"Congress shall make no law respecting an establishment of religion, or prohibiting the free exercise thereof; or abridging the freedom of speech, or of the press; or the right of the people peaceably to assemble, and to petition the Government for a redress of grievances.
Not sure how "intrusive speech" isn't a subset of "speech".
And if something is published here legally, what's the objection to it being "internationally accessible"? Modulo "munitions" (e.g. encryption).
> You have to synchronize accesses to it in some way.
Pretty simple.
> it is probably faster to send them through pipe, because the copying overhead is negligible compared to synchronization overhead, which would be there in shared memory case too (and will probably be larger).
There is still synchronization overhead -- just because it's hidden from you in the kernel doesn't mean it isn't there. You should check out the source of your favorite kernel and see how much work is done behind the scenes to transfer data over a socket.
So you have an extra copy, PLUS extra synchronization overhead. The only reason people ever think that method is faster is because of operator error, e.g. creating and destroying shared memory segments thinking it's like malloc.
> 1) In most cases it is really needed to tell kernel that you are done
man futex
Or just busy-wait, or do a nonblocking "read" like you would anyway when reading from a socket.
> kernel and let it do any low-level synchronization details,
Look at the code. Really. It's a lot of overhead compared to userspace solutions.
> In UNIX, pipes/sockets are the most flexible means of IPC
s/flexible/common
Obviously shared memory is the most flexible because you can implement whatever scheme you want with it. There's always shared memory somewhere anyway, even with sockets, it's just hidden from you in the case of kernel code.
> Using mutexes or semaphores or something like that would in most cases lead to busy-waiting or unnecessary convoluted code.
Busy-waiting is done in multiple places in the kernel. If you're blocking on read anyway, what's the difference -- and if you're not, it's no more convoluted to check a shared condition variable on each pass than nonblocking reads and accumulations.
> Setting up the TLB and handling the page faults,
Should be done once, at the beginning, and the segment re-used.
> then doing the interprocess synchronization
There is IPC anyway when you are sending information between processes. If you delve into the kernel you may be surprised at the number of layers of operations it takes to present data from one process to another using a socket.
> but the constant and synchronisation overhead for a write() is smaller than an mmap()
You're assuming the pages needed are already mapped in the former case. If you're writing anything of size, the pages will probably need to be faulted in anyway. If you're writing something small, then setting up your shared memory at the beginning and then re-using that memory is obviously the way to go, rather than getting and destroying shared memory segments every time you need them.
You don't make any sense when it comes to "buffers" (writing to shared memory IS writing to a buffer); a pipe doesn't give you a "big picture" to "properly optimize things" (a WTF "argument"), and no syscall is needed to "transfer control", unless you're talking about futexes or some other method to clue the kernel in, in which case, you do indeed have a way to clue the kernel in.
Writing once is faster than writing multiple times. That's why shared memory is obviously faster than not sharing and copying. Time needed to set up shared memory segments is negligible if done right -- once, at the beginning, and then re-used as needed.
> b) Dominant, decisive, intelligent, women are likely to share similar evolutionary advantages to men.
Unfortunately women like that are incompatible with many human cultures. E.g. try being a dominant, assertive woman someplace with Sharia law. Historically, those traits were bad for survival in many parts of the world.
Or women were treated like chattel and were property of men, and they didn't get a say in who they mated with. So their intelligent genes would be diluted. Or look at Darfur -- it's rape rape rape all the time. Being good at Sudoku requires a certain level of societal stability before it's really that handy.
If you CAN do X, and the only thing stopping you from getting the deal is the other side's perception of you, then influencing their perception (i.e. lying)
can save the deal, save your company, and solve their problem -- all at the same time.
It can OFTEN be in BOTH your AND your client's best interest to lie.
And ask for forgiveness later after they are happy with you, IF it ever comes up...