An experiment in fighting racism on Twitter - <AUTHOR> https://www.washingtonpost.com/news/monkey-cage/wp/2016/11/17/this-researcher-programmed-bots-to-fight-racism-on-twitter-it-worked/ <comment><USER2> > "I used Twitter accounts I controlled ("bots," although they aren't acting > autonomously) to send messages"

It's a shame they over-hyped the title and made it all clickbaity. The post itself clearly states that they are not autonomous and therefore not programmed. Possibly not helped by the use of the word "bot" over and over. Am I right in saying "bot" implies autonomous?

That aside, interesting short read with a fairly intuative result. Good to see it backed up with actual research. Though it doesn't mention how many accounts were targetted during the research.

Is there potential a way of analysing messages for racism in the same way some do sentiment analysis? Is it the same sort of problem? Not even a beginner in the field, let alone an expert!

<comment><USER3> there's the small issue of the use-mention distinction, but generally I imagine it could work well. There are so many dog-whistles out there (especially for the alt-right) that the sort of overtly racist comments on Twitter would come out quickly.

In Twitter's case, follower graphs would also probably be a good indicator, at least for people who follow less than 200 accounts. Not to mention that a lot of these people overtly say in their twitter bios that they're part of the frog police or whatever.

Twitter could nuke Alt-right Twitter from orbit pretty easily. Then they'd just go run off and use some "actual free speech" twitter clone and fester in their own space. Just like they do when reddit/4chan cleans house.

<comment><USER2> I don't think banning (my assumption of your intention behind nuking) is the correct course of action.

I just had a similar chain of thought at a story of a students union wanting to ban certain newspapers from the campus. My opinion is that, in that instance, the union should focus on the people who buy those newspapers. Why do they buy them? Do they agree with the messages? Or perhaps they are believing what they see without critical thought? There is then either an ideological debate or perhaps critical thinking education that can be undertaken.

Hiding the message of an organisation or individual seems morally wrong to me. I'd much rather see the opinions published and shunned rather than outright censored. In the Twitter example, I'd like to see the classifications used to help understand the viewpoint of others or provide further information prior to posting, rather than to censor / ban individuals or groups.

Not a fully formed idea, for which I apologise. My gut (and it is only my gut) tells me there is a useful aid there.

<comment><USER3> I have a bit of trouble with these arguments, because the "free speech" argument feels really recent to me.

At it's core, twitter is an assemblage of communities. Twitter can simply decide that, no, it doesn't want neo-nazis on its website. These people are then free to go make their own websites to hang out on.

Websites like Digg or Something Awful, despite also not being about single topics, were never sitting around thinking "Oh, I want to ban this guy that goes around calling black people monkeys, but _free speech_ ". Even 4chan would ban people for that sort of dumb stuff. I feel like this argument only became prevalent after reddit became big.

There is an argument to be made that reddit's philosophy on this point single- handedly made all "community" websites worse, because it stigmatized the notion of "drawing a line in the sand", and implied that all websites have to accept everyone.

I think in the newspaper example, Twitter is a newspaper, not the campus. People can make new websites easily, just like they can make new newspapers. Twitter is under no obligation to "publish" stuff if they don't want to. The internet is the campus. No DNS blocking, just banning users from some websites.

And, honestly, the amount of people who care about the "free speech" issue dwarfs the amount of people who see Twitter as "the place to get trolled at". It doesn't seem like good branding to be at the same level as 8chan on this point.

Though, to your point, on a more general level, figuring out what's going on in the audience for these sorts of messages is important.

<comment><USER4> Actually I think there's more nuance than simply whether or not to silence certain views.

The problem with the alt-right is that it is an idea. Ideas are very hard to kill by censorship and when you do let them "fester" they get more extreme and radical. This is in part how we arrived at the alt-right becoming what it is today.

We should want the alt-right out in public in spaces where there are checks and balances. There, it can be killed by moderation (in both senses of the word, organic and inorganic) and dilution.

If you push the alt-right to exclusively use their own walled gardens, to concentrate in their own unmoderated, subverted echo chambers, that's when you should be very terrified because that's when you birth actually scary groups.

There will always be unpopular opinions on some subject. No matter how much proof you have, there will be flat earthers and creationists. No matter how much you promote equality, there will be bigots. But there is also always a continuum on the spectrum of these affiliations - some people may be mildly xenophobic and have valid concerns on immigration or have ignorant/antiquated views on gender equality, for example.

When you take a hard-line stance on these opinions on the hope of promoting one ideal (no matter how noble) you always run the risk of also promoting the other through polarisation.

<comment><USER5> Do you think the "alt-right" is the only major problem? Try tweeting something against a Hillary or Obama policy during the election or challenge a 'liberal' person -- the responses can be no less harassing and vitriolic.

This idea that the 'right' is a problem is in itself part of the problem.

There is plenty of harassment from those that claim they are more tolerant than the rest of us.

I do agree with your echo chamber point though -- one needs only to spend a few minutes on Mother Jones's comment section to read all manner of hate against those who have different opinions from their own.

You are exactly correct -- the public sphere ought to welcome all viewpoints as sunlight is ultimately the best disinfectant.

One of the reasons Hillary lost the election is that her campaign seemed to be in a bubble -- holding valid concerns of many groups in contempt while surrounding itself with voices that spent more time self congratulating or feeling intellectually superior whilst many Americans (such as in the Rust Belt) found themselves marginalized. The Obama campaign by contrast actually reached out to the so-called deplorables.

<comment><USER6> Yes, a left wing bubble exists. However, without any qualifications of scope and scale, it sounds like you're suggesting that the vitriol approaches a comparable level to that of the alt-right. That's just a plainly false equivalency.

<comment><USER7> You say that, when the alt right is an artificial internet meme, while leftist dogma rules over universities and continues to go after people's jobs for wrongthink.

Vitriol is clearly a bad measure when subjective interpretation rules are becoming official policy. Even Twitter now has special treatment for particular groups enshrined in its policy. You can be as vitriolic as you want, as long as it's against the "correct" group.

<comment><USER8> Hear hear. Equality before the law is the true egalitarian ideal.

<comment><USER9> One problem is that, to the extent the inchoate Alt Right has decided upon this (and I think it has), we _explicitly_ reject egalitarianism AKA equalitarianism (they're cognate, right?). In Vox Day's first cut 16 point formulation, Point 7 is:

 _The Alt Right is anti-equalitarian. It rejects the idea of equality for the same reason it rejects the ideas of unicorns and leprechauns, noting that human equality does not exist in any observable scientific, legal, material, intellectual, sexual, or spiritual form._

From [http://voxday.blogspot.com/2016/08/what-alt-right- is.html](http://voxday.blogspot.com/2016/08/what-alt-right-is.html)

<comment><USER10> Well, I appreciate you sharing a clear statement on what it is. I haven't seen one before this. Although plenty is debatable here, No 14 and 15 look immediately contradictory as one leads to laws with a preference for whites or discrimination against blacks while other implies a pure meritocracy. I don't have to guess about this, though, given I live in the South whose history shows how it plays out. ;)

Good that there's a number of items on the list I agree with. Some common ground.

<comment><USER9> Note that #14 is simply a version of this [https://en.wikipedia.org/wiki/Fourteen_Words](https://en.wikipedia.org/wiki/Fourteen_Words) Besides being cute in making it #14, I suspect he felt it needs to be explicitly stated since its inverse is an explicit goal of our enemies. Although Vox Day himself isn't "white", and I'll note as a matter of taxonomy divides the Alt Right into the Alt West and Alt White, the latter a very small subset.

The general answer to the apparent contradiction is generally found in the other points and implied in #15: complete _separation_ , e.g. #11 " _The Alt Right understands that diversity + proximity = war._ " No proximity, no war of that sort e.g. embedded in those laws you refer to, and therefore no problems with #14 of those sorts.

Also, I should make clear this is Vox Day's first cut of a statement of what the Alt Right is, but he thinks it's solid enough to get it translated into quite a few languages now. But the Alt Right is still seriously inchoate.

<comment><USER10> Interesting. I do understand the concept of having an inverse. A person in West Tennessee explained to me why she discouraged whites and blacks marrying. Seems like pure hatefulness at the start. No, her concern was that they rarely have white kids. Enough of it happening would eliminate the white race. Other races also work hard to preserve their ethnic history, especially cosmetic stuff. I don't see it as any different so long as laws aren't passed for banning it or people hated on for not following the preference. That is, I don't like it but I understand it's similar to what other groups do.

"#11 "The Alt Right understands that diversity + proximity = war."

That needs some explanation. What does that mean exactly?

<comment><USER9> #11 " _The Alt Right understands that diversity + proximity = war._ "

It means if you put enough people of different identities in close proximity, the inevitable result is "war". Maybe not Yugoslavia type war, but warfare of one type or another, including "simple" economic warfare, which was _one_ of the causes of The War Between the States, and had been a frequent problem for the young Republic prior to that, but it also happens on very small scales, see for example the various non-native merchant classes in so many countries, and that doesn't require large numbers on both sides.

There's a social scientist who's research said much the same thing, who published his data early but otherwise sat on his results for more than a decade, Robert Putnam. As Wikipedia puts it, " _His conclusion based on over 40 cases and 30,000 people within the United States is that, other things being equal,_ more _diversity in a community is associated with_ less _trust both between and within ethnic groups._ " (emphasis in original: [https://en.wikipedia.org/wiki/Robert_D._Putnam#Diversity_and...](https://en.wikipedia.org/wiki/Robert_D._Putnam#Diversity_and_trust_within_communities)).

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment> aaron-lebo These findings are less than exciting:

 _Comparing across the panels of Figure 4 shows the decay in the effect of Treatment C over time. Although the effect remains statistically significant, the coefficient decreases steadily. In Panel A, the point estimate of -.27 indicates that the daily rate of the use of the word "_" decreased by .27 more among subjects in Treatment condition C than among subjects in the control condition. This average treatment effect for condition C decreased in magnitude to -.17 in Panel B and -.11 in Panel C. I collected data for 2 months, but these results are not shown because none of the treatments are significant._

...

 _Encouragingly, these effects persisted over time, for the first month under study, although not for two months. Also, the effect was significant at p < .05 in the two week time period, but it was only significant at p < .10 in the one week and one month time periods._

Wow! The subjects cut back on their slurs for the next month (and what is the practical difference in .27 fewer daily slurs _compared to the control group_?)....and then they started doing it again.

[http://kmunger.github.io/pdfs/Twitter_harassment_final.pdf](http://kmunger.github.io/pdfs/Twitter_harassment_final.pdf)

Can't help but wonder how you get a Washington Post article out of that. It's a good graduate-level semester paper. What connections does this guy have?

</comment><comment><USER3> There was a This American Life episode[1] where someone who was being harassed got contacted by the troll.

The harassment was some pretty serious shit (making a twitter account of the victim's dead father, then insulting through this). But one day the attacker realized how awful the thing they did was, and ended up apologizing profusely to her.

There was also that study about how people's views on gay marriage evolved substantially after just a couple conversations with a gay couple, who would say "Hey, why can't we get married?". Though there was some statistical issues with that IIRC....

I have a hard time saying "these are proof that yelling at trolls works" because there are good and bad ways of communicating the point, but it sure feels like direct confrontation works on some level.

Though I don't know how well this stuff works against people from /pol/, if only because most of them don't actually care about the issues, just yelling at people.

[1]: [https://www.thisamericanlife.org/radio- archives/episode/545/...](https://www.thisamericanlife.org/radio- archives/episode/545/if-you-dont-have-anything-nice-to-say-say-it-in-all-caps) (Act 1)

</comment><comment><USER11> Is there an ethical question regarding the computer-assisted manipulation people's perspectives, however ignorant and wrong they may be? I believe so. Personally I would not write this sort of software for this reason, and consider government investment in such software an affront to basic human rights - UN Article 13, Freedom of Expression: _Freedom to seek, receive and impart information and ideas of all kinds, regardless of frontiers, either orally, in writing or in print, in the form of art, or through any other media_.

 _I disapprove of what you say, but I will defend to the death your right to say it._ \- [https://en.wikipedia.org/wiki/Evelyn_Beatrice_Hall](https://en.wikipedia.org/wiki/Evelyn_Beatrice_Hall) (commonly misattributed to Voltaire)

<comment><USER12> How is it remotely blocking someone's free speech or access to information when you politely and automatically tell them that the blatant racial slur they just used might offend someone?

<comment><USER13> One problem - and one that people often forget - is that historically, societies change their position on what's appropriate.

It's also easy to see an automated approach leading to hilarious results with say tweets from African-American rappers.

Finally, maybe we can move past this "might offend someone" stance that offers 0% nuance?

<comment><USER12> It's a curious argument that says un-nuanced insults should be permitted but pointing them out as such should not.

Or that in the past insults differed therefore we should ignore today's.

Or that hypothetically something hilarious might happen so don't call out trolling harassment.

</comment></comment></comment></comment><comment><USER14> "and I only included subjects who appeared to be a white man"

Ah yes of course - racism can only be carried out by white men after all.

What a pile of rubbish. If you take offense at words, things are going to get progressively worse for you as more and more automated bots enter the scene.

The answer of course, is for people to stop taking offense.

Do these people get offended at spam emails suggesting they need viagra or a fuckbuddy? What's the point?

<comment><USER15> > Ah yes of course - racism can only be carried out by white men after all.

No one said that. Just that racism is an oppression where whites are the top caste. Blacks can be racist against blacks too, for example internalized racism.

However, blacks being racist against whites is an odd statement, like homeless people being classist against the rich. Race is pseudoscientific classification of people to justify entire economic systems like slavery, and still lives on like awful backwards compatibility.

> Do these people get offended at spam emails suggesting they need viagra or a > fuckbuddy?

Companies like twitter are far more aggressive at fighting spam than physical threats. To the point where people simply reported abusers as spammers at one point. That's why no one bought them.

Oops. Maybe they should've been less arrogant to their embattled userbase; so- called "social justice warriors" turned out to be normal people just trying to help them make money. What happens social media companies refuse to learn things like sociology. [http://www.businessinsider.com/disney-twitter- acquisition-tr...](http://www.businessinsider.com/disney-twitter-acquisition- trolls-abuse-harassment-report-2016-10)

<comment><USER16> _However, blacks being racist against whites is an odd statement, like homeless people being classist against the rich._

And it indeed would be classist. You are neglecting this because you think that homeless people can not have any influence.

But consider this, group of homeless people ambush and attack people they consider rich. Would you still think that it is acceptable?

If we want to root out some behaviour then we can not tolerate it in any form.

<comment><USER17> How often is it happening that the rich are being ambushed by groups of resentful homeless people? Is this a significant and recurring problem in your country that existing policing is failing to address?

</comment></comment></comment></comment><comment><USER18> Would be great to see more data from this research to understand the scale of the effect and quality of analysis. How long the measurements have been performed? Was there direct causal link between the tweet from bot and reduction of the number of racial slurs? Were there any other events that could influence the research, e.g. a hot topic that could consume most of the attention of the subjects? Was there reduction in the number of hate speech tweets at all or the subjects just switched to the milder language? How big is the effect in relative numbers?

</comment><comment><USER19> Isn't it interesting that time and again every online forum with moderate affordances for anonymity quickly degrades into name calling and other generic abuse? Seems like the only way to combat this degradation is with heroic manual effort.

Maybe there are automated ways around the problem but it's tricky balancing open discourse with automatic banning of abusive accounts since any kind of automated system will invariably stifle legitimate discussions. The word "nigger" when used in a discussion with the proper historical or even comedic context can be benign but I doubt any automated system will be able to make the distinction since that would require some kind of understanding of history and comedy. For example, [https://www.youtube.com/watch?v=VOwjtNEoRYg](https://www.youtube.com/watch?v=VOwjtNEoRYg)

<comment><USER20> Community moderation is no joke, but the gold standard for sustaining an incredibly civil, intelligent community is probably Metafilter. Then again, their size is tiny fraction of Twitter's or Reddit's.

<comment><USER17> Isn't this the problem, that some forums get too big to moderate?

</comment></comment></comment><comment><USER21> As a CS researcher who often assists researchers in sociology with Twitter studies I struggle with how accurate or meaningful the results are when the study depends on inferring too much about specific users.

I have never conducted a study which involved actively intervening (and would like to know how IRB approval was obtained to do so), but the number of inferences which must be made are difficult enough when simply observing user activity. I would think running manipulation checks for the user's perception of the intervening profile would be nearly impossible.

Ultimately what is most difficult about Twitter studies is that the data collected is rarely available for inspection by anyone other than the researcher collecting it. When so many subjective decisions must be made in analysis this is particularly troublesome.

</comment><comment><USER22> The sample size was 242. If you click the link to the paper, then click the supplementary material link, you get [this pdf]([https://static- content.springer.com/esm/art%3A10.1007%2Fs111...](https://static- content.springer.com/esm/art%3A10.1007%2Fs11109-016-9373-5/MediaObjects/11109_2016_9373_MOESM1_ESM.pdf)) that explains the methods.

</comment><comment><USER23> Did I miss it or is there no mention of sample size and average tweets/day/sampled user?

</comment><comment><USER24> "I used a racial slur as the search term because I thought of it as the strongest evidence that a tweet might contain racist harassment. I restricted the sample to users who had a history of using offensive language, and I only included subjects who appeared to be a white man or who were anonymous."

Right, because white men are the only people are the only ones who can be racist. If you have to rely on a criterion like this, that's a very good sign that the method you use is not objective.

Besides that, I really like the reply the author chose, the message and its phrasing seem very effective, while staying respectful towards the tweeter.

<comment><USER25> You're reading a lot into something they didn't even claim. They explain why they had to choose a specific race in the following paragraph:

> It was essential to keep the race and gender of the subjects constant to > test my central question: How would reactions to my sanctioning message > change based on the race of the bot sending the message?

Why they chose people who were white shouldn't really matter as their conclusion was not "white men are racists". It was just something that had to be kept constant and grouping on race is not something unfamiliar for researchers, especially since in this case the whole experiment was based on the races of the sender and receiver. (Also note that it's much easier to distinguish between black and white rather than if they made the profile pictures different shades on the Fitzpatrick Scale)

</comment></comment><comment><USER26> Is this Twitter that's fighting racism also the Twitter with this moderation policy? [nsfw] [https://i.sli.mg/2V7OlX.jpg](https://i.sli.mg/2V7OlX.jpg)

</comment><comment><USER27> What has to kill the alt-right is sunlight: drag their ideas into public and point out how those are wrong. With a boot, if necessary.

So for instance, no, race is not a biologically meaningful signifier.

<comment><USER28> We detached this subthread from [https://news.ycombinator.com/item?id=12992743](https://news.ycombinator.com/item?id=12992743) and marked it off-topic.

</comment></comment><comment><USER29> The findings are in a way depressing. Only the black bots with many followers cohort was any effective, probably due to intimidation effect on the offender.

<comment><USER30> You misread the article. Only the white bots were effective. The black bots with many followers had a negative effect, but only on a subset of the users. Based on the effect sizes and without more data these finding don't look terribly robust anyway.</comment></comment>


Nokia: Microsoft, I Wish I Knew How To Quit You - <AUTHOR> http://seekingalpha.com/article/712411-nokia-microsoft-i-wish-i-knew-how-to-quit-you

<comment><AUTHOR> The takeaway ...

"In the long run, Nokia's contract with Microsoft -- to be Windows Phone system exclusive and in return to get funded from Microsoft -- makes it impossible to be a takeover target. Big players like Apple (AAPL) or Samsung will not purchase Nokia, because their bid will be deemed as anti-competitive. Small or new players such as Amazon (AMZN), Huawei, or ZTE, will not purchase Nokia, because they cannot easily get out of the exclusive contract with Microsoft. And they perhaps wouldn't want to have a confrontation with Microsoft either."

<comment><USER2> I knew the deal Nokia made with Microsoft was bad, but I didn't know it was that bad. Basically, they bet the company on Microsoft's ability to grow WP7, an OS which back then had 2% market share with no real chance of improvement (and so far it still hasn't shown it can do much better).

<comment><USER3> I think it's still better than betting it all on a yet-to-be-released in-house operating system (like RIM is doing).

<comment><USER4> I don't.

Having complete control over the development, able to allocate as many resources as you have towards improvement and complete knowledge as to how the product is coming along > hoping, praying, begging some 3rd party to do the same.

Microsoft cares greatly about the success of WP, however certainly not as much as Nokia does. Microsoft's always fought long battles to eventually succeed in new markets. They've been competing in mobile for what, 15-20 years (CE, PocketPC, win mo, wp, ??)?</comment></comment></comment></comment>


Should western museums return colonial cultural artifacts stolen from Africa? - <AUTHOR> https://www.fatumasvoice.org/should-western-museums-return-colonial-cultural-artifacts-from-africa-the-caribbean-and-the-pacific/ <comment><USER2> Yes...you should return what you took by force. The history and cultural value of the items belong to the country of origin. Why is this even a question? These artifacts are symbols that represent cultural identity of individuals in the country of origin right now! I suspect the whole "culture and tradition is not a big deal" indoctrination prevalent in the west makes it difficult for some westerners to imagine associating your identity and even value as a member of the society the artifact represents.

<comment><USER3> > imagine associating your identity and even value as a member of the society > the artifact represents.

If that was the case, these artefacts would hold no value. I don't think sweeping statements like this help any argument.

We should gladly share our culture. If that means shifting heritage artefacts around the world to spread understanding, then so be it. So yes return items to originating countries, but also share them to other countries on loan. This allows normal people to learn about other cultures from first principles.

It also means that in case of war, or difficulty, items can be preserved from damage.

<comment><USER2> Sharing is up to the owner not the receiver. You are concerned about learning about other culutures, that is what I mean by a disconnect, if they had the ability the countries of origin would inavde (war, killing,etc..) Over those artifacts. This would be unthinkable in a western context. Look at syria,do you think they would prefer if the US or UK permanetly took their artefacts to preserve them instead of letting ISIS destroy them?

Imagine someone taking libery statue and the whitehouse by force to keep them safe and learn about american culture. You're speaking this way because you are confident those countries won't invade your country and kill your people over it

<comment><USER3> I was talking about all artefacts. rembrant, van gough, the grays inn hand axe, the sutton hoo hoard, should be on tour, for the world to see and learn about.

> if they had the ability the countries of origin would inavde (war, > killing,etc..) Over those artifacts

If I understand you properly, you are saying that a number of countries would engage in war to retrieve statues et al, not for the financial gain, but for _morale_? I think you misunderstand what expansionism is about.

> Look at syria,do you think they would prefer if the US or UK permanetly took > their artefacts to preserve them instead of letting ISIS destroy them?

I doubt the vast majority care, I think they want peace, food, healthcare and jobs. It is a privileged to care about cultural sights. When you are at the point of having to live in a roman tomb to survive the winter, I think you cease to care about the cultural or historical provenance of a building/object.

> Sharing is up to the owner

define owner. Should the Flaminio obelisk be repatriated, if so, where to, Greece? after all it was stolen from Hellenic egypt.

the Koh-i-Noor is another more complex one to solve. Its been stolen twice(at least), once by Nader Shah, then again by the Durrani who sold it/gave/traded/lost it to the Singh dynasty. It was then traded to the East India Company in exchange for them saving the ruling class from its incredible standing army(who would have conquered india if they hadn't been betrayed by their own leaders).

The Elgin Marbles is more simple, but thats rare.

The actual mechanics of repatriation is pretty hard. Which is why putting all these artefacts into a supra-national trust, travelling around the world is better, because _everyone_ gets to see it. Hopefully it will also stop corrupt governments seconding them to adorn private residences. Like all the stuff looted from iraq.

</comment></comment></comment></comment><comment><USER4> It would depend on each individual item's provenance would it not? If it was seized during a war or under Colonial rule certainly it should be returned. If it was found by a private citizen during a legally sanctioned dig or purchased from the legal owner, then no.

</comment><comment><USER5> It would be interesting if renowned museums could be mobilized as stewards of antiquities. Not only do they take on a new mandate: returning cultural artifacts, but also share the skills developed over generations for how to care for and curate these artifacts.

The idea of going places and shipping findings back home to be stuffed in a museum seems dated and very "colonial" to me. Maybe the future of museums is as described above.

</comment><comment><USER3> why just africa?

surely if we go down this route that each museum should only really own stuff from it's own country. However that means that each country will have a monoculture.

So ideally there should be a system of rolling loans to allow normal people (ie those who can't drop £5k to fly out to visit a far away country) to see the culture and history of the world.

<comment><USER6> There's little meaningful exposure to other cultures or worlds by going to museums. I'm sure HN is the kind of place that already has a higher density of museum memberships, but to me, it's all infotainment. I will continue such museum memberships because they're great infotainment for when guests come to town, or when I visit some major city.

But how many museum trips does it take to have an interesting take on China and its people without sounding utterly blind? I feel like a lifetime of museum-going might never amount to anything except as toy conversation for a certain kind of social gathering.

<comment><USER3> I'm not sure what museums you are going to, but for me they taught me:

1) a boat load of science

2) natural history (evolution, human interaction etc)

3) how to farm

4) a boat load about the romans[1]

5) basic early middle east history

> take to have an interesting take on China and its people without sounding > utterly blind

You're missing the fundamental point. Museums are generally a cheap way for people to see and understand the world. They serve as an elementary introduction to the world. If something takes a person's eye, they can talk to the curator and be connected to current academic thinking.

This is something that normally only happens at university, which is expensive. It is about access, if museums go away history culture and understanding become the preserve of the rich.

[1] The Romans are an interesting point. A lot of artefacts are loot from raids especially in the arse end of the empire. Because soldiers were promised land in exchange for service, not only was it colonialism, but they were paid for by the assets of the conquered.

</comment></comment></comment><comment><USER7> Yes

</comment><comment><AUTHOR> A large number of artifacts held in Western museums and libraries are known to have been appropriated over the ages through conquest and colonialism. The looting of African objects anthropologists, curators and private collectors took place in war as well as in peaceful times. It was once justified as an act of benevolence; as saving dying knowledge. So what now that we know the truth?

<comment><USER8> It should be left up to the nations that the loot was plundered from. After going to the Cairo museum it's a painful experience going to an Egyptian exhibit in the US. But going with people who have never been to Egypt or even the African continent there is definitely a real appreciation of what is in the American Museum. The best of the best should go back to Africa but there should be thought put into things left behind to inspire people to goto the source.

<comment><USER9> Did you go to the Cairo museum before or after the most recent looting?

[https://www.nationalgeographic.com/news/2013/8/130823-museum...](https://www.nationalgeographic.com/news/2013/8/130823-museum- mallawi-egypt-looting-artifacts-archaeology-science-antiquities/)

I want culturally significant archaeological artifacts preserved wherever the most stable environment is. I do not care which country it happens to be, as long the stability and budget for conservation is there. I think the urge some people feel to return items to whichever country currently occupies the same geographic origin that these artifacts come from is well-meaning, but fundamentally misguided. Preservation for future generations should be the guiding principle. If that means Object X resides somewhere else, then that is the best choice, period.

<comment><USER8> Yes I went before the recent bad times in Egypt. I think your opinion is the wrong path to go down, because if we start putting arbitrary rules of stability on countries they will never be returned.

Egypt was stable for decades. Artifacts were plundered by the Nazis during WWII just a few decades ago and a priceless Van Gogh was stolen just a few weeks ago, so is Europe no longer considered a safe space for those cultural artifacts in Europe? Museums in Africa should be setup and educated with the profits gained from stealing their heritage and they should be returned.

<comment><USER9> Nazi artifact plundering and destruction was a huge loss for everyone. (Same with the firebombing of Dresden, for that matter.) Thankfully, the West also set up the MFAA post-war, and recovered a great deal of material. [https://en.wikipedia.org/wiki/Monuments,_Fine_Arts,_and_Arch...](https://en.wikipedia.org/wiki/Monuments,_Fine_Arts,_and_Archives_program)

The theft of a single painting is not the same as looters running rampant with destruction. Nowhere is 100% safe. That is the entire problem with long-term conservation! The best we can do is go for maximum political stability.

When I younger, I saw first-hand exactly how much mainland China lost during the Cultural Revolution. Destruction of anything old was the (literal) rule of the day. Again, it was a loss to the history of humanity.

What I want to avoid is events like this: [https://www.theguardian.com/world/2013/jan/28/mali- timbuktu-...](https://www.theguardian.com/world/2013/jan/28/mali-timbuktu- library-ancient-manuscripts)

On a long enough time scale, they become exceedingly common. The one surity of things is that if something is valued by one group, someone else will want to destroy it. The best we can do is ensure that these artefacts are in the most stable locations possible. Over time the particulars will undoubtedly change. But the base answer is the same.

</comment></comment></comment></comment></comment><comment><USER10> Let's take ancient Egyption artifacts as an example. The ancient Egyptians who created the pyramids and all of those related artifacts we're conquered by the Romans. Since then there had been many wars, conquering nations and revolutions. Right now Sisi is the ruler of the land of Egypt yet I don't see why he deserves ancient Egyptian artifacts any more than any other leader whose country conquered Egypt at one time time.

</comment><comment><USER11> How is this even a question? Of COURSE they should.

The fact this is even up for debate is preposterous.

Africa should have its artefacts, Greece should get its marbles back and Western museums should be emptied of ALL war treasure and imperialist spoil.

Only then would so-called Western moral authority actually have some basis.

<comment><USER12> > _How is this even a question?_

Let me try.

These artefacts could be considered common human heritage. Mesopotamian artefacts are no more the property of the British than the government in present-day Baghdad. In many cases, the local governments are unstable or extremist, which has lead to priceless treasures being destroyed, defaced, lost or stolen.

Anyone claiming this is a simple issue is oversimplifying. Putting aside recent imperialism, should Republican Roman artefacts plundered from Gaul or Syria be returned to Paris or Damascus?

<comment><USER13> > Putting aside recent imperialism, should Republican Roman artefacts > plundered from Gaul or Syria be returned to Paris or Damascus?

The similarities with colonial reparations are striking, and this issue runs into the same kind of problems. If a crime was committed a very long time ago so that everyone involved is long dead, who should be punished, and who is eligible for restitution?

A blanket proclamation that "Everything that was stolen should be returned" is so ridiculously oversimplified that you can't do anything but dismiss it.</comment></comment></comment>


Calendar Apps Suck, but they don't have to - <AUTHOR> http://blog.logcal.net/post/31056145571/calendar-apps-suck-but-they-dont-have-to

<comment><AUTHOR> due to high traffic, the site went down briefly. it's back up</comment>


German government accuses news website of treason over leaks - <AUTHOR> http://www.theguardian.com/world/2015/jul/31/german-government-accuses-news-website-of-treason-over-leaks

<comment><USER2> Note that the institution accountable for this prosecution of blogger- journalists is the german attorney general [1]. The same institution recently refused to perform any investigations against US agents spying on german politicians because the US didn't volunteer to provide any evidence [2].

German public already seems very unhappy about how german politics seems to put US interests above the interests of the German people so potentially this is going to backfire quite badly.

[1] [https://en.wikipedia.org/wiki/Attorney_General_of_Germany](https://en.wikipedia.org/wiki/Attorney_General_of_Germany)

[2] [http://www.theregister.co.uk/2015/06/12/germany_drops_invest...](http://www.theregister.co.uk/2015/06/12/germany_drops_investigation_into_nsa_hacking_merkels_phone/)

[edit]: orthography fixes</comment>


Best way to learn to analyse site loading performance? - <AUTHOR> Hi friends,
I recently created a little wordpress site called cryptovacancy.com but right now it is incredibly slow to load.
I want to learn how to analyse the loading properly to figure out which bits are causing it to load so slowly. I know there are many sites that will scan your site and offer you tips, but does anyone have any resources (blog articles etc) that teach you how to do the analysis yourself? Cheers. <comment><USER2> Your page is Wordpress based, uses a cache (based on HTML comments), all resources are already minified and there isn't much content on the front page.

I'd say use [http://www.webpagetest.org/](http://www.webpagetest.org/) and look at the time-to-first-byte metric. It may be that your hoster is slow or a hardware upgrade (different cache service, SSD) gets the highest speed boost. Are you using shared hosting and could another 100 websites be on the same server?

Update: asked a friend who works at a Wordpress hosting company. He recommended this guide: [https://www.keycdn.com/blog/speed-up- wordpress](https://www.keycdn.com/blog/speed-up-wordpress)

<comment><AUTHOR> Hey. Thanks a lot. The blog especially looks very interesting. Yes, I am using shared hosting. I tried using 123reg for the first time for this site, and I am quite disappointed with their service and support. Before I was on Birchhosting which was much better.

I am beginning to think it would have been better to build it in RoR and use heroku. (Though it would have taken me 10x as long!). Sigh.

Cheers for the info !</comment></comment>


Repairing a dented tuba with magnets - <AUTHOR> http://www.supermagnete.de/eng/project8 <comment><USER2> I'm sorely tempted to order one of their super-strong magnets, such as <http://www.supermagnete.de/eng/K-26-C> but I'm almost certain it'd lead to personal misfortune.

I wonder if this one of those "regret the things you do, not the things you don't do" situations, or simply a "don't be an idiot" situation...

EDIT: Just seen this one. Bloody hell. <http://www.supermagnete.de/eng/SALE-038>

Also interesting, this page <http://www.supermagnete.de/eng/faq/price> about how the price of neodymium "increased about fivefold between January 2011 and June 2011" due to china reducing export quotas.

<comment><USER3> Really: be careful. Strong magnets are extremely dangerous. I once managed to get a 1" cube of neodymium stuck on either side of my hand for a few minutes.

<comment><USER4> Think this is the very first thing anyone does when handed two pieces of neodymium. I know that I did this within a minute of my first experience with two free and loose neodymium magnets. I watched many others do it too. The look on one's face is always of shock and disbelief that this magnets were so strong, mixed in with the pain, even though you warned them before.

</comment></comment></comment><comment><USER5> The striking thing about this is not just that it _works_ but that it works _so well_. That I did not expect.

</comment><comment><USER6> Wow that beats the heck out of disconnecting the joints, rolling it out by hand, and then soldering everything back together. That would have saved me hours in high school. Plus, magnets.

<comment><USER7> I guess it's not only a time saver. Unless you actually would unroll/re-solder an instrument worth > 10000 EUR, which would scare the hell out of me.

Funny trivia: The article uses ' as delimiter here, as in 10'000 although Germany (the domain name uses .DE and the company is based there) uses the . here -> 10.000 Seems like the author ('from Italy') of that post is using the swiss notation? Any other (european) country using ' as a thousand separator?

<comment><USER8> I worked in a music shop during high school and pulled apart a few tubas worth at least that. We had a similar magnet tool, but it didn't always work perfectly, and could leave scars in the metal if you weren't careful. His tool might be better, or he might have gotten lucky.

We certainly didn't try to unroll them, however, and I let my mentor solder them back together.

</comment></comment></comment><comment><USER9> That's very clever. Their "reverse hammer" is reminiscent of the climbing world's funkness device:

[http://books.google.com/books?id=vNyk_tSE2mUC&lpg=PP1...](http://books.google.com/books?id=vNyk_tSE2mUC&lpg=PP1&dq=big%20walls%20book&pg=PA23#v=onepage&q=funkness&f=false)

</comment><comment><USER10> That reverse hammer is fascinating. I'm a little confused by the diagram, though -- I think the magnet stays on the instrument's surface for the entire motion. It never comes away from the instrument, even after the hammerhead hits the stopper.

<comment><USER11> It is called a slide hammer. The blow to the end of the shaft is transferred to the magnet on the opposite end and pulls the magnet inside.

</comment></comment><comment><USER12> Very cool. I talked to a few of brass-playing musician friends and this is the standard process for getting rid of dents in brass instruments.

</comment><comment><USER13> They use a similar techniques to repair dents on your car.

</comment><comment><USER14> Too bad they do not ship to USA. Any clue why this could be? Because of magnetic field and air shipping?

Also, any clue where I could find something similar in USA territory?

<comment><AUTHOR> I just ordered a few magnets from their site, including one that can lift 100 kg. (<http://www.supermagnete.de/eng/FTN-63>) and worried about the exact same thing.

There's a shipping guide on their site, and apparently it's not as problematic as you would think since you can "shortcircuit" a magnet by wrapping a piece of metal around it. The guide is here: <http://www.supermagnete.de/eng/faq/shipping>

</comment></comment><comment><USER15> Can this be used to repair bent car body panels?

<comment><USER16> The magnets would have to be so strong they would be dangerous to work with.

The easier way is just weld rods on to pull a dent out with, and then chop the rod off. There are several dent pulling tools that work this way.

</comment></comment><comment><USER17> In England, we don't dent the tuba.

</comment><comment><USER18> Wow, that is a nice tuba.</comment>


My experience with Firefox OS - <AUTHOR> https://thelab.o2.com/2013/05/my-experience-with-firefox-os/

<comment><USER2> They need to do something to make the locally installed app experience a little nicer (for developers, I mean). The 2 manifest file thing is a bit awkward.

<comment><USER3> Agreed. This was very confusing and does not seem to be explained very well anywhere.

</comment></comment><comment><USER4> Site was down again. But read the content from the cache and it looks more of how to start developing on Firefox OS post than an user experience of the OS itself. Of course it does talk about the experience of developing a simple app, but doesn't give a view of the user experience. I wish it gave a comparison. Besides that the Firefox OS platform looks interesting and attractive given every web developer can be an app developer on Firefox Os.

</comment><comment><USER5> If anyone is interested, I've posted some of my observations using the Peak <https://gist.github.com/cheeaun/5517132>

<comment><USER3> Thanks for this!

</comment></comment><comment><USER6> So how does this compare to Android/iOS dev experiences? Other JS+CSS+HTML developement?

<comment><USER7> It's really easy. As he said, the only real difference between a webpage and a FirefoxOS app is the manifest.

I made a small Pomodoro app (<https://github.com/worldsproject/pomos>) as a test for learning the Chrome Web Store and FirefoxOS markets.

Chrome disallows some things, in my case localStorage, and replaces it with their own alternative. While not major, I still had to make adjustments. I also had to define a window. Again, not minor, but these still keep it sufficiently different from a normal webpage.

Whereas with the firefox app, I just had to write a manifest, and it worked without any changes.

The Chrome store is a bit more refined though, it has better and more options for displaying promotional graphics, and looks better overall.

</comment></comment><comment><USER8> Seems to be down - anyone got a cache?

<comment><USER9> [http://webcache.googleusercontent.com/search?q=cache:https:/...](http://webcache.googleusercontent.com/search?q=cache:https://thelab.o2.com/2013/05/my- experience-with-firefox-os/&strip=1)

<comment><AUTHOR> Thanks - looking at a fix now, won't be a moment</comment></comment></comment>


Vibrating telepresence robot baby for hugging during phone calls - <AUTHOR> http://www.springwise.com/telecom_mobile/robot-baby-designed-hugging-phone-conversations/ <comment><USER2> Uhhh.....

Time to throw your hands in the air and say "only in Japan"</comment>


The Internet Sector calls for Greater Transparency in Requests for User Data - <AUTHOR> https://blog.mozilla.org/blog/2013/07/18/the-internet-sector-calls-for-greater-transparency-in-requests-for-user-data/ <comment><USER2> I'm proud of all of you who have had some hand in pushing back. Basic transparency measures are the right place to begin, and with them, a rudimentary accounting by the public can commence.

There's no reason why everyone here who's at the helm of a tech company or investment firm, large or small, doesn't sign onto these initiatives/letters and demand accountability for these electronic surveillance programs. I'm aware many of you have boards. Bring this up with them, and make it an imperative!

In case you missed it, you can spread this widely (and sign, of course): [https://petitions.whitehouse.gov/petition/provide-more- trans...](https://petitions.whitehouse.gov/petition/provide-more-transparency- around-government-surveillance-internet-users/n9h2JDYK)</comment>


Show HN: Juntoo 1.1 – Visual feedback tool for web and UX designers - <AUTHOR> https://juntoo.co/wd.html <comment><AUTHOR> Updated version of this Chrome extension that lets you add notes to any HTML element on any webpage.

This version includes sharing annotations w/others directly from the extension.</comment>


Ask HN: Does the following system exist? - <AUTHOR>

I want to have a laptop that runs as a hypervisor. I want to be able to run VMs on the hypervisor and be able to fast-switch desktops between these VMs. Basically hitting CTRL+ALT+F2 to switch to a windows VM - where the screen and KB are available to it, and CTRL+ALT+F3 to get to, say a linux VM.
Obviously - there are some HW changes that need to occur... but is there a machine/method for doing this?
I dont want t run a full OS with KVM/VirtBox where I run a VM in a window.
Suggestions? <comment><USER2> Is this being motivated by "I just want a really efficient way to switch between desktops in different OSes?" If so, VMWare Workstation in full-screen mode is a configurable key chord (Ctrl-Alt, Alt-Tab) away from the host OS. I use Windows 7 as host (on a midline Dell laptop) and Ubuntu something-or-other in the VM. This is my primary dev environment and works great for my purposes.

There's also a Unity option, where they just put (e.g.) Linux apps as first- class windows within Windows, but the UX of it hurts my head.

If, on the other hand, you're e.g. worried about the performance hit to the VM given that the host OS is constantly running, then this won't help you.

</comment><comment><USER3> There's the VMWare hypervisor. I think the hypervisor by itself is free, and can be used as a base OS, /iff/ it works on your hardware. [https://www.vmware.com/products/vsphere- hypervisor/](https://www.vmware.com/products/vsphere-hypervisor/) You probably have to register an account, but afaik that product itself is free.</comment>


"Time-saving" Generators for Designers - <AUTHOR> http://www.awcore.com/html/news/14/25-Time-saving-Generators_en

<comment><USER2> Do the quotes indicate that they think these are really not time savers?

<comment><USER3> Yeah, that was my first thought as well. They seem really "useful".

<comment><USER4> Note to sibling comment by ibisum: it looks like your post on _Easter Island heads have bodies_ got your account algo-killed.

</comment></comment></comment><comment><USER5> I love ColourLovers because I'm not always the best at selecting a color palette. So Pictaculous looks pretty neat too. I thought it was only going to give me the top few color averages of the photo I submitted, but it appears to be giving me more than that. Nice.

</comment><comment><USER6> I was bored/tinkering a while back and wrote a couple little generators for creating favicons and/or 16x16px PNG icons, and one for creating CSS sprites from multiple images. They're nowhere near as polished, but functional.

PNG/Favicon maker: <http://ico.orng.us/>

CSS sprite generator: <http://spritebuilder.orng.us/>

</comment><comment><USER7> I'm the guy who did Patternify, in case you have any questions/feedback.

<comment><AUTHOR> where can i send you feed back

<comment><USER7> You can use the contact form on my site: <http://sachagreif.com> or do it via twitter: <http://twitter.com/SachaGreif>

</comment></comment></comment><comment><USER8> Please change the title to

        "Time-saving" Generators for Designers

as per the guidelines: <http://ycombinator.com/newsguidelines.html>

</comment><comment><USER9> Another background pattern generator at <http://www.patterncooler.com/>

It has a built in pattern editor, I think it uses some svg madness. It's very impressive.

</comment><comment><USER10> Shameless plug: <http://www.neatgrid.com> for creating pixel-perfect grid layouts.

</comment><comment><USER11> These are pretty helpful, especially for those of us who aren't designers or don't have them at beck and call. Favicons are a good example, as well as the little progress spinners.

</comment><comment><USER12> What about Twitter Bootstrap? That's pretty useful.

</comment><comment><USER13> While on this topic, anyone have a tool like this for creating iOS buttons? I've found a few but they've not worked

</comment><comment><USER14> Fail for missing Cosby: <http://cosby.secretgeek.net/>

</comment><comment><USER15> These are great, but I'd like more things like Twitter bootstrap. Anyone know any?

<comment><USER16> zurb released a comparable and quite beautiful framework called 'foundation' <http://foundation.zurb.com/>

<comment><USER15> Not seen that one before, thanks!

I've also found skeleton: <http://www.getskeleton.com/>

</comment></comment></comment><comment><USER17> These are actually pretty neat. Bookmarked.

</comment><comment><USER18> I try so hard not to be bothered by his "pstck" slurping sound after every period of every sentence, but I can't quite do it. Pstck.

Was going to upvote, but I'm not going to. tslsck. The lip smacking seems to get into my subconscious and makes my skin crawl. pslk.

<comment><USER19> Huh?

<comment><USER18> The pslick sound, at the end of every sentence. If you are hard of hearing I can run it through a speech to text program and have it report that "pslick" is not a valid sentence.

It bugs the hell out of me and lots of people do it. Stop it. Its like farting on stage so the mic picks it up. The audience shouldent have to tell others that it is aggrevating.

<comment><USER20> I think you may be accidentally commenting on the wrong post. I don't see any video or audio on this post's link.</comment></comment></comment></comment>


Remote Linux Desktops with NoMachine NX - <AUTHOR> http://www.linux.com/learn/tutorials/392935-remote-linux-desktops-with-nomachine-nx <comment><USER2> I recently started using this to give non-CLI users a little bit of a sense of control over their EC2 Linux boxes.

My experience so far is that it's a bit fussy; Hard to get installed on Maverick, and requiring occasional reboots. Logging isn't what I want it to be.

When it works, however, it works nicely, and it's definitely faster than VNC.</comment>


A Few Important Concerns From the Facebook App O'Reilly Report - <AUTHOR> http://www.centernetworks.com/facebook-app-usage-report <comment><USER2> Interesting point, how do you measure "usage" of a Facebook App? Most of the things I see just take up space on the user profile and display random bits of information (like top friends, ilike, etc). So I'm guessing the number of users are simply the number of people that have the app installed. Is there a good way to measure usage?

<comment><USER3> Daily active users is based on "touch points".

Touch points are:

Canvas Page Views

Link Clicks in FBML

Mock-Ajax Form Submission

Click-to-Play Flash

So Facebook requires some kind of daily interaction for a user to be counted.</comment></comment>


Who Really Benefits From Interest Deductions - <AUTHOR> http://www.nytimes.com/2012/10/28/realestate/mortgages-who-really-benefits-from-interest-deductions.html

<comment><USER2> It's only talking about mortgage interest.

That's a pity. I'd like to read a well-written piece about how interest deduction for business works out. It seems designed to make it easier for businesses to invest, but I wonder how the costs of leveraged buyouts etc compare.

<comment><AUTHOR> The analysis is the same. The tax-deduction is a subsidy to the <equity> holders, of whatever asset class. So, for homes, the subsidy accrues to the equity holder. For business, the same thing. Policywise, housing is consumption (luxury, in particular) and business capital structure is investment. Subsidizing the latter has a far stronger policy rationale per-se but the capture technique (components of cost or net profit) is arbitrary. Analytically, see: [http://en.wikipedia.org/wiki/Modigliani%E2%80%93Miller_theor...](http://en.wikipedia.org/wiki/Modigliani%E2%80%93Miller_theorem#With_taxes).</comment></comment>


Don't let your hard-earned wealth be forgotten - <AUTHOR> Hi HN,
I'm Jos van der Westhuizen, co-founder of Nexus (https://www.thenexusfamily.com/). Nexus is an online dashboard for family members to share where they have life and health insurance, where they bank, and where they have investments.
After realizing that our families have very little transparency on where we have assets, we discovered that many other families share the same problem. Subsequently, we discovered that billions of dollars go unclaimed every year.
Nexus is our attempt to make families aware of this problem and to make it easier for them to automatically track their estates.
Thanks so much, and we can't wait to hear your thoughts! <comment><USER2> Is the info hidden from the other family members until you die? How does the site detect that you have died?

<comment><AUTHOR> The names of the institutions will be shared while you're alive. We have partner institutions for monitoring deaths and if that doesn't work, other family members can notify us via the dashboard. We then validate the death report and assist the family members in accessing the estate.

</comment></comment><comment><USER3> great idea!</comment>


Alan Turing foresaw machines' potential to mimic brains - <AUTHOR> http://www.sciencenews.org/view/feature/id/341450/title/A_Mind_from_Math

<comment><USER2> At least Turing had some small evidence for his beliefs. I've always been a bit taken aback by claims for developing "atomic theory" by the ancient Greek Democritus (<http://en.wikipedia.org/wiki/Democritus>). Since Democritus was going totally on guesswork, how can you credit him with starting a theory like that?</comment>


Write & Sell Your Damn Book (Paul Jarvis) - <AUTHOR> http://mydamnbook.com/ <comment><USER2> The most interesting thing to me is that this is sponsored by Gumroad and Mailchimp. This suggests that self-publishing is at the end of the early adopter phase, and perhaps on its way to becoming mainstream. Would love to know more about the corp. involvement here.

(And yes, signed up.)

Update: By "corp. involvement" I'm not suggesting this is a shill for Gumroad and Mailchimp, but rather it's interesting they see enough potential in this sector to agree to sponsor this. Also it is an interesting wrinkle on the self-publishing / info product phenomenon to get sponsors for your book.

<comment><USER3> Self-publishing has been around for more or less as long as there has been books.

Personally, I hope it doesn't become 'mainstream' otherwise every Tom, Dick and Harry who thinks they can write will be churning out their own 'masterpiece', and then wondering why no-one is interested in it. There is something to be said for budding authors to get their 10,000 hours in in 'publishing silence', and then produce something actually worthwhile reading.

That said, if someone has produced a guide that will benefit good writers that otherwise might flounder a bit with the self-publication process, more power to them. And the creator of this approach does note, to his credit, that this won't make you a better writer. I wonder how many will take serious note of this point!

<comment><USER4> I think EVERYONE needs to write a book, at least once. I am not entirely convinced every book should be published, however.

</comment></comment></comment><comment><USER5> Since we're in the topic of book-writing, I want to ask HNers for opinion:

I consider myself pretty knowledgeable with Google App Engine (built 2 websites with it). I'm thinking of writing a (self-published) book on the topic. In my dev, I use Scala and CoffeeScript+AngularJS. My questions are:

(1) Is App Engine too small to worth writing?

(2) Should I include "beginning Scala and CoffeeScript+AngularJS" (which means will be OOT and take significantly more effort to write)?

(3) But if I don't include them, wouldn't that significantly limit my target market? (people who use Scala and CoffeeScript+AngularJS on App Engine)

<comment><USER2> My opinion (as a Scala consultant, so biased) is the market for a good book on Scala web dev is larger than a book on GAE.

<comment><USER6> As a Scala developer I would really buy a book on Scala, which explains advanced features. "Scala in Depth" is good, but I would want a book with a lot of stuff on type system, FP, to the level of Scalaz, Shapeless, and macros.

</comment></comment></comment><comment><USER7> One thing that bothers me about "write your book" courses and howtos is that they rarely specify what type of book the course is geared towards. In particular, is this course for fiction or non-fiction writers?

<comment><USER8> Both. Although I am a non-fiction writer, I was careful to make sure the ideas (and they're all general) fit for both genres.

</comment></comment><comment><USER9> Book, that's a very broad term. Are we talking textbooks, recipe books, short- fiction, novels, non-fiction or any of the other tens of genres?

You should rethink the whole pitch because it fails to deliver the main point.

Nice design though.

</comment><comment><USER10> Paul I've signed up - it's a no brainer not to. I will commit to completing the course, and if you need me to publish a review or help out then let me know my friend.

Best wishes, and thanks. Julian.

PS. So far it's super slick, and I can't wait to get started.

<comment><USER8> Thanks Julian! Any help you've got, I appreciate and am humbled by.</comment></comment>


The design behind Chadder, John McAfee's new chat app - <AUTHOR> http://siliconangle.com/blog/2014/05/03/the-design-behind-chadder-john-mcafees-new-chat-app-for-security-conscious-millennials/

<comment><USER2> McAfee has lost almost all credibility. That's not an attack on the merits of his new chat app but I really don't think that he's in a position to request to be trusted (again) and I fail to see what the team behind this thought they would gain by having McAfee's notoriety attached to their reputation.

See DropBox for another recent example (though arguably, that one had a lot more going for it from DropBox's perspective).

</comment><comment><AUTHOR> No technical details, no source code available for now...</comment>


Zuckerberg backs Andela, the startup more elite than Harvard - <AUTHOR> http://money.cnn.com/2016/06/16/technology/andela-24-million-chan-zuckerberg-foundation/index.html?sr=twCNN061616andela-24-million-chan-zuckerberg-foundation1123AMStoryLink&linkId=25601151 <comment><USER2> I'm disgusted at how this publication is using a click bait title to describe an otherwise perfectly fine startup, for their own pageviews. No journalistic integrity whatsoever.</comment>


Common Multithreading Mistakes in C# – Unsafe Assumptions - <AUTHOR> http://benbowen.blog/post/cmmics_iii/ <comment><USER2> Nice writeup, and most of this isn't specific to C#, but applies to native code (or Java) as well. These are typical misconceptions of people who have not studied concurrecy.

What is specific to C# (applies to Java too) is having an implicit mutex/condition pair in each object. I think this is a terrible design mistake because it's not very practical and it's confusing to newbies (a big stumbling block for students when I studied concurrency at the uni).

It's not very practical because in most concurrency tasks I've dealt with (not using C# or Java), there's typically more conditions than there are mutexes (typically 2-4 + O(n) conditions per mutex). In Java/C# land, the typical solution would be to have a complex conditional expression, all the threads spinning on a .wait() there and then over-use of .notifyAll() instead of .notify() causing lots of spurious wakeups and wasting precious cpu cycles.

It's confusing because of the reason above, it's easy to go "I'll solve this by adding another mutex". Unfortunately this is seldom the correct solution (to any problem), and a much better result would be achieved adding more condition variables to wait on.

I wouldn't mind too much about a design mistake in a language I almost never use (Java/C#) if it wasn't the de facto language for learning about concurrency at universities. This has produced so many engineer with a twisted view on concurrency. I understand that "Java is easy" and "C is hard" but when we're already talking about memory models, multi-core, cache coherency and atomicity, C-the-language isn't the hard part and Java-the-language does very little to help with those parts.

<comment><USER3> _In Java /C# land, the typical solution would be to have a complex conditional expression, all the threads spinning on a .wait() there and then over-use of .notifyAll() instead of .notify() causing lots of spurious wakeups and wasting precious cpu cycles._

The typical solution is to use the higher-level constructs provided by the standard library that take care of these details for you. In Java, at least, explicit mutexes, notify, etc in application code are roughly the equivalent of typing 'AES'. I'm somewhat surprised this C# article happily tells you to just keep adding locks until you think things work. "I mean if you have a hunchback, just throw a little glitter on it, honey, and go dancing."

<comment><USER4> It's more complicated than that. Implicit synchronization and multithreading in libraries is error-prone, poorly performant, has a significant cognitive overhead. It's a liability if you are chasing performance and a liability if you aren't. So to be good citizens libraries have to assume that a user might need a complete control in choosing and using a concurrency model (of course unless they are the ones providing concurrency models themselves).

<comment><USER3> I'm talking about libraries that provide higher-level concurrency constructs not implicit multithreading in a library that does, say, image manipulation. The whole point of the former is to reduce cognitive load and errors.

<comment><USER4> I assumed you were talking about things like concurrent queues, etc. They do implicit synchronization and enforce a specific concurrency model, so they should not be used by libraries.

<comment><USER5> Yes, but I think he also meant things like the TPL, PLINQ, TPL Dataflow, RX, Akka.NET and so on. I have been happily using one or more of these to write tons of event driven and/or parallel client-side code and haven't touched a lock in years.

And libraries exposing APIs through observables is a great idea.

<comment><USER6> I don't dislike TPL and PLINQ (though I don't much care for Akka.NET at all), but at the same time I pretty regularly write code with locks. There are problems for which the simplest solution is to treat it stupidly and imperatively and to run those threads side-by-side with well-defined critical sections.

<comment><USER5> For dead-simple parallel execution of a handful of jobs, IMO nothing beats mapping data to tasks with Linq and then "await Task.WhenAll". And if they have to share data, use something in System.Collections.Concurrent.

<comment><USER7> For fun bits of API inconsistency there, would you think that...

"task.Wait()" is to "await task" as "Task.WaitAll(tasks)" is to "await Task.WhenAll(tasks)"?

Maybe it's just me, but I sure did.

<comment><USER8> WhenAll returns a task (a promise, essentially) that completes "when all" its arguments have completed.

<comment><USER7> I seem to have misremembered, the odd one out was WhenAny, and the issue is that it crashes when given the empty set, instead of waiting forever (which is fine if you're dealing with a specific number of tasks, but not fine if you're actually using it for a dynamic number of tasks).

I could have sworn it was WaitAll, but heck - clearly not! Sorry :-).

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> The more threading code I have seen, the more convinced I become that it should be avoided at all cost. The pitfalls are nonobvious and potentially incurring datacorruption. Rather, they should be behind understandable abstractions (like await/async and Task/Task<T>, but those have their own pitfalls) where applicable. Also, I can see value in an "unsafe" block (e.g. a "threading {}" keyword) where the writer of code communicates to the reader "inspect this with special threading awareness"

<comment><USER10> I concur, with a caveat - feel free to use threading / async I/O if you think you really understand the runtime behaviour of your code.

I've seen so much code that just runs TaskFactory.StartNew some arbitrary number of times in a loop to run some CPU intensive task with no/effectively no I/O, presupposing a performance improvement as a result.

Understand runtime performance. Understand the different failure modes inherent in multi-threaded approaches, and lastly: test, profile, test and profile again!

<comment><USER11> Is there something wrong with

        for(int i = 0; i < Environment.ProcessorCount; i++)
            Task.Factory.StartNew(...);
    ?

<comment><USER12> Potentially, yes. Assuming that you are correctly synchronizing the actions inside each Task as to avoid race conditions (a big assumption), there is no control on the number of threads here. What if your program is already using a bunch of threads for something else, and then you go ahead and spawn off 10 more? You will oversaturate the CPU and end up with virtual threads, thus incurring scheduling overhead. In my opinion when you are doing this type of thing you should almost always use a thread pool to ensure that you aren't creating an unreasonable number of threads.

</comment></comment></comment></comment><comment><USER13> I enjoyed this article. I started concurrency with Delphi 5 using critical sections, mutexes, semaphores, etc. Then I started using C# which was a major upgrade, and I loved having the simplicity of things like the `BackgroundWorker` class and the `lock` statement which certainly beat the need to write my own multi-threaded class for every little thing in Delphi. I recall some of article's mentioned atomicity problems, and I would have to juggle when to use Interlocked vs locks, etc. For example, it mentions floats and hardware-specific issues with 64-bit ints, but from what I recall I treated booleans as atomic and not needing Interlocked or locks, but floats I did. That CPU caching detail level though sounds mighty insidious. I also forged ahead and used TPL, async/await, Rx (Observables are pretty awesome)...

But now I live on Erlang's BEAM (via Elixir) and I freaking love it. The real gain for me is that I found I didn't need mutexes, locks, critical sections, etc., because the super lightweight thread-like Erlang processes (not OS processes) themselves run in parallel _but each one runs in a single-threaded manner_. This effectively turns each process itself into its own critical section, and it's this aspect that I personally have found _extremely_ valuable.

<comment><USER8> Do your Erlang processes never execute an asynchronous (await-like) operation? If they did, any shared data would need to be protected by a mutex just as like as with multiple OS threads.

<comment><USER13> > _Do your Erlang processes never execute an asynchronous (await-like) > operation? If they did, any shared data would need to be protected by a > mutex just as like as with multiple OS threads._

I think perhaps what you are getting at is that there is still need for coordination for parallel processes, and that is totally correct. But each BEAM(!) process has its own non-shared memory and runs on a single thread. This is my point in that it _doesn 't_ need the mutex because the process' execution is its own critical section. I've structured my ibGib engine to be more functional and the need for the mutex/critical sections has disappeared for me.

For example, check out this SO post that I just googled: [http://stackoverflow.com/questions/28554114/applying-a- mutex...](http://stackoverflow.com/questions/28554114/applying-a-mutex-into- an-erlang-example)

In the answer, he tells the OP (who thinks he needs a mutex) that what he can actually do is just do the work in the process. This kind of understanding of single-threaded "bounded context"-like execution, combined with ubiquitous immutability has been massively helpful for me with ibGib.

In C# for example, I was trying to apply `Task<ib>` __all over the place __(yes it is non-idiomatic lowercasing of the interface...totally aware of this sin in C#). And so even with async /await awesomeness, the code is just riddled with async/await, blah blah blah. The same goes for using Rx in C# for a "microservices" engine (I started it before that was a fad and I called them autonomous services lol) and my more recent POC with Rxjs in TypeScript/JavaScript. The point is the whole approach of concurrency and whatnot are "addons" in the form of mutexes, semaphores, critical sections, locks, barriers (I've used quite a few over the years). But with programming on the BEAM(!) with Elixir and Erlang, parallel coding is just a more natural experience, because it's just how it's done.

In my view, this largely stems from the aspect I mentioned: that they have _parallel_ processes, each running its own memory and on a single thread, communicating with message passing (now called the Actor Model but they didn't know that at the time). On top of this fundamental design decision, they built up an awesome infrastructure with OTP, Supervision trees, and more. But anyway, I didn't mean to write that much - but it's just been a delightful experience, since my very first application in Delphi was a transcription app with a from-scratch multi-threaded realtime document checker (like a spell checker, but more pluggable and geared towards transcription with text expansion which is a totally different use case than existing off-the-shelf spell checkers).

</comment></comment></comment><comment><USER14> It's odd to have a whole section on coherency and never mention the built-in `volatile` keyword who's entire purpose is to indicate that a variable requires fresh reads..

<comment> squeaky-clean > In this case, the correct solution is to mark field _A as volatile. If > that's done, the compiler shouldn't reorder the reads of _A and _B, because > the load of _A has load-acquire semantics. However, I should point out that > the .NET Framework, through version 4, doesn't handle this case correctly > and, in fact, marking the _A field as volatile will not prevent the read > reordering. This issue has been fixed in the .NET Framework version 4.5.

From the article linked where they mention volatile and the C# memory model. Seems like volatile may not actually have worked as intended for this case!

<comment><USER14> I'm not saying volatile is a good solution, but to not cover it in this article is an odd omission - especially since he shows an explicit memory barrier.

</comment></comment></comment><comment><USER15> I'd like some more explanation of why the author thinks it's better to use a lock statement than an Interlocked method most of the time.

This is really just fundamental concurrency stuff though. Something which is sadly in short supply in some people's skill sets, but then I guess not everyone spent four years working on massively multithreaded C++ software early in their career like I did.

I'd really prefer it if C# made you share memory explicitly - default shared memory concurrency is just asking for trouble, in this and many other languages, because you have to do extra to do things _right_ , rather than extra to do things _wrong_.

<comment><USER14> I agree about the use of Interlocked. Obviously if you already need a lock around additional code, there is no need to use Interlocked, but for any single statements where Interlocked is available, it is a simple performance gain. That said I have seen several incorrect and unnecessary `CompareExchange` usages that could have been avoided with a simple lock...

<comment><USER16> > That said I have seen several incorrect and unnecessary `CompareExchange` > usages that could have been avoided with a simple lock...

This is, obviously, the answer to the GP's question.

<comment><USER17> That's no reason for avoiding atomics in simple use cases. "Use locks and then profile" is fairly bad advice. Forget the profiler and _always_ use atomics in simple situations where you know exactly how they work. Just don't try anything complicated with them.

</comment></comment></comment></comment><comment><USER18> It's a cool series. Mostly review for me but I certainly passed it to my team to review. Ultimately I say that 99% of the time the correct answer is to not use raw threads and never share memory. There are much better concurrency and parallel patterns out there. Akka(.net in this case), Coroutines and Channels, Erlang Actors, Clojure's core.async, .net's async/await even. Honestly if you are reaching for threads you probably should ask yourself if some other way would be better and safer.

</comment><comment><USER19> I learned something about Thread.MemoryBarrier().

I expected the following to be safe:

        Dim V(99) As Integer
        Parallel.For(0, 100, Sub(i)
                               V(i) = i
                             End Sub)
        Dim Result = V.Sum

If I understand correctly it looks like I need to flush the memory before accessing V:

        Dim V(99) As Integer
        Parallel.For(0, 100, Sub(i)
                               V(i) = i
                             End Sub)
        Threading.Thread.MemoryBarrier()
        Dim Result = V.Sum

<comment><USER20> The CLR has some implicit memory barriers that make most things "just work."

Take a look at "[t]he following implicitly generate full fences" here: [http://www.albahari.com/threading/part4.aspx](http://www.albahari.com/threading/part4.aspx).

Parallel.For would _probably_ be covered by "[a]nything that relies on signaling." There's more info scattered about in some Stack Overflow answers. The content is useful, just unofficial.

E.g. [http://stackoverflow.com/a/6932271/242520](http://stackoverflow.com/a/6932271/242520), [http://stackoverflow.com/a/681872/242520](http://stackoverflow.com/a/681872/242520)

</comment></comment><comment><USER21> I know there is a website that has gamified certain race conditions. There was a interface that allowed you to step through code in 2 "threads" and the goal was to defeat the enemy army though deadlocking their code.

Does anyone know where it is? It was very informative..

<comment><USER22> I know this one: [https://deadlockempire.github.io/#menu](https://deadlockempire.github.io/#menu)

</comment></comment><comment><USER23> Nice post. Simply written and easy to understand.

There are two others:

\- [http://benbowen.blog/post/cmmics_i/](http://benbowen.blog/post/cmmics_i/)

\- [http://benbowen.blog/post/cmmics_ii/](http://benbowen.blog/post/cmmics_ii/)

It's well worth learning about the Interlocked class if you want to do parallel programming. If you get it wrong then you will see incorrect/corrupt results. It's also worth keeping in mind that for simple tasks it can be quicker to do them single threaded, due to the overheads involved. I demonstrated this in a simple benchmark app [0] that I wrote for a chapter of my book on ASP.NET Core [1].

[0]: [https://github.com/PacktPublishing/ASP.NET-Core-1.0-High- Per...](https://github.com/PacktPublishing/ASP.NET-Core-1.0-High- Performance/blob/master/Chapter%206/ParallelBenchmarking/ParallelBenchmarking/src/ParallelBenchmarking/Program.cs)

[1]: [https://unop.uk/book/](https://unop.uk/book/)

</comment><comment><USER24> Always use Interlocked over a lock statement if you're just dealing with incrementing numbers. It's 1-line, faster and always safe. Author is mistaken for advocating a lock in these situations.

Only need lock() and the full Monitor classes if there's more to be done within the locked statement.

</comment><comment><USER25> These are common mistakes novices to multithreaded programming make, presented and explained well. Very nice.

In my experience another mistake made by novices and journeymen alike (at least occasionally by the latter) is to reach for this tool without careful consideration of whether it's even necessary.

<comment><USER26> I'm such a novice I avoid reaching for the tool ;)

</comment></comment><comment><USER27> "Newbie" question: if reading a value without having a lock on it can give you a torn read, wouldn't it be possible to crash the CLR by getting a torn read on a reference? Or, does it account for this somehow?

<comment><USER28> A reference fits perfectly in a word-sized chunk. A pointer/reference is typically 32 or 64-bits wide, since it is simply pointing to a location in memory.

</comment></comment><comment><USER29> The one that caught me recently was assuming that you could use a Dictionary as a concurrent cache.

You can't. Dictionary can be _read_ concurrently, but once you start writing to it concurrently all bets are off. ConcurrentDictionary implements IDictionary and allows concurrent writes.

Also, Entity Framework. We had an icky bug coming from somebody storing the datacontext in a member variable. Don't do that.

<comment><USER19> The one I am concerned about is iterators (for each). I have read somewhere that iterators are stateful and I should be careful when using them in a multi-threaded environment. Currently I am ignoring this advice and use them happily (on static lists and dictionaries) but I am not sure if this isn't going to bite me some day. But I don't understand how it would bite me.

<comment><USER30> That is because your different threads are not using the same `Enumerator`. I'm guessing your threads look something like this, based on your mention of `foreach`:

        // In multiple threads:
        foreach(element in collection) { ... }

`collection` is not an `Enumerator` but rather an `Enumerable`. The `foreach` statement calls `collection.GetEnumerator`, so each thread gets its own iterator. You would only see inconsistencies if another thread modified the collection during iteration.

Try this instead, and you'll guaranteed see issues:

        // Before:
        IEnumerator enumerator = collection.getEnumerator();

        // In multiple threads:
        while(enumerator.Move()) {
            var element = enumerator.Current;
        }

</comment></comment></comment><comment><USER31> I've often wondered what the _real_ gains are for using async/await methods inside a web api call per say, especially when it's a single task being performed, like a query. I've tried to setup concurrent queries, and do whenall or parallel.foreach. But I think I always hit a road block because each query has to be from a separate context for that to work.

<comment><USER32> while the awaitable task is .. well.. waiting for the query, the thread servicing it is returned to the thread pool to be reused. This helps with thread pool starvation in the case when the process must service many requests.

<comment><USER5> Exactly.

Here's another simple way to think about it: Handling a request usually invokes a couple of layers of your code until you hit some IO - database, file system, network, etc. If that IO is done in a blocking fashion, this request is consuming server resources THE WHOLE TIME, even while it's doing nothing but waiting for a network response. On the other hand, if the IO is non- blocking (async), then this request consumes no resources while it's waiting.

So imagine you have a request that takes 2000ms to service, and 1700ms of that time is spent waiting on the database to fetch some data. Without async, that request will consume 2000ms of CPU time. With async, only 300ms of CPU time is used.

<comment><USER33> No, the request wont consume 2000ms of CPU time if it's blocking. It will prevent the thread from doing other work which may be bad, but the CPU itself does not have to spend all 1700ms on that thread. At least my CPU doesn't use 100% of a core while waiting for a network package from the database server.

<comment><USER5> Should have phrased it as "the blocking wait will consume resources (keep a thread busy) for 1700ms whereas the async one will not." Hard to stay both accurate and extremely simple when talking about concurrency.

</comment></comment></comment></comment></comment><comment><USER34> Not working very well in mobile: [https://imgur.com/xPn8YLc](https://imgur.com/xPn8YLc)

A simple table would have worked fine.

</comment><comment><USER35> Great article. I learned a lot from reading this; being relatively new to C#, now I certainly know what to look for when coming across multithreading.

</comment><comment><USER36> I think I learned this during learning Peterson's algorithm. The professor emphasized the flag had to be a single operation variable.

</comment><comment><USER37> Interesting is also that these recommendations also apply to the use of the async/await pair

<comment><USER38> Only when running code in different threads. async/await isn't necessarily multithreaded. Actually usually isn't.

<comment><USER37> Which makes it worse because it opens up the possibility of intermitent bugs, and also those "it works on my machine, I don't know why it does not work on the server"

So it is better to treat them as multithreaded always... which falls back on the original post.

</comment></comment></comment><comment><USER39> the biggest gotcha I've seen with C# multithreaded is the usage of the basic .NET Collections: Dictionary<K,V> and List<V>

they will mostly work (like multiple threads reading, or 1 writes while another retrieves), except when two threads try to simultaneously write, or when 1 writes while another enumerates.

When that happens, all bets are off, and you will silently get obtuse errors such as null return values or enumerating past the end of the collection, or a corrupt collection that throws exceptions from other (seemingly) random and unrelated areas.

I believe the new concurrent collections take care of this, but it is still so easy for beginners to shoot themselves with async programming. very much in stark contrast to how dev-friendly the rest of the CLR is.

<comment><USER40> _New_ concurrent collections?

.NET 4 is over eight years old now.

And for all these years, the docs have explicitly informed about lack of thread safety in the non-concurrent versions and referenced the concurrent equivalents.

<comment><USER39> yes, but it doens't stop novices from doing it, or perhaps if you have existing code you are trying to parallelize.</comment></comment></comment>


Why the best and brightest students in India choose to be engineers - <AUTHOR> http://cogsciresearch.blogspot.com/2010/04/math-phobia-pedagogy-and-choice-of.html <comment><USER2> Engineering -- specifically, computer programming with the intent of working for a body shop -- is a reliable path to comparative material prosperity and financial security in India in a fashion that it is not in the United States. That is really all there is to it.

(Engineers are not poorly paid in the US by any stretch of the imagination, but the career choice doesn't strictly dominate e.g. teaching, law, working for an arm of the local government, or generic white collar labor. By comparison, Indian engineering salaries were quite recently increasing by 50% _every six months_.)

<comment><USER3> What's a body shop?

<comment><USER4> A temp agency:

<http://www.idinews.com/bodyshop.pdf>

<comment><USER3> Thank you :-)

</comment></comment></comment></comment><comment><USER5> Becoming a software engineer at Infosys or Tata is likely to make you several times wealthier than other "reasonable" jobs in India (and BTW, working in those huge CMMI-crippled corporations must be boring as hell: I don't think that fun of working/studying plays a huge role in people's choices).

This is not true in OECD countries (unless you give up the technical career path and become a start-up founder): taking up an MBA or cardiology will multiply your odds of becoming wealthy, but engineering will not.

</comment><comment><USER6> Social pressure. Being an engineer or doctor is considered the most prestigious thing in India.

<comment><USER7> That just begs another why. Any ideas?

<comment><USER8> Engineers get a much higher paying job. Computer engineers (both hardware and software) get paid 10-20 times as much as other professions. MBAs get more. Note that even students who do Mechanical & Civil engineering try to get software jobs. That's where institutes like Aptech and NIIT come in (they're now global franchises, but they started as tiny training institutes in an Indian city). I once met an auto-rickshaw driver who had a Bachelor's degree in science. He started driving the rickshaw because 2 years after graduating he couldn't get a job. If he'd done engineering, his college (or training institute) would have placed him somewhere.

When I graduated high school, and was in line to submit my college application, I heard a bunch of people mention that they'd applied for engineering and medicine and would take whatever they got.

Another reason, specific to guys is that it increases their chances of getting a bride from a "good" family, and also the potential dowry he could get. Software jobs tend to take you abroad more often than other jobs, and, believe it or not, there are some communities in India that will raise dowry prices based on the number of US immigration stamps you have on your passport. Yeah, officially dowry doesn't exist.

Lastly, some people study engineering simply because they're really good at it. I've encountered hundreds of people who really had the aptitude to be engineers.

Disclaimer: I'm Indian but I studied Physics, Chemistry and Mathematics. No one would give me a job after I graduated even when I cleared all interviews and written tests.

<comment><USER7> Does the man get paid the dowry in all of India or is it reversed in some parts?

<comment><USER8> Technically dowry is a gift given by a father to her daughter when she gets married. In-laws exploit this saying that once the girl "marries into a family", everything she owns now belongs to the family.

I don't have an authoritative answer to your question, but I know that there are marriages where no dowry is involved at all.

</comment></comment></comment></comment></comment><comment><USER9> Perhaps it is something with societies in ascendancy - Britain in the 19th Century, the USA in the 20th.

I can't see Britain producing engineers with the status of Brunel anymore: <http://en.wikipedia.org/wiki/Isambard_Kingdom_Brunel>

</comment><comment><USER10> The engineer/doctor story is more of a middle class phenomenon in India. If you look at rich and/or elite families, business or finance dominate their choice of profession. The poor sadly, have no access to even basic education.

Education is/was the ticket for middle class families out of their "predicament". To them, (arguably so) few disciplines require an intellectual rigor as much as Engineering or Medicine do. It is like a badge of honor for them. Being a Historian might be regarded interesting out here in the US - over in India, it would be regarded more as "...ah poor thing, he didn't amount to much". The arranged marriage system driven by tradition and on-paper worthiness more than anything added to this - an engineer or a doctor's value shot up instantly in the market (but I hear things are a changing)

Eventually, I think it is market-driven. Lack of opportunities elsewhere force the rest to take up professions that serve more as an insurance policy than a passion. It is changing though.

</comment><comment><AUTHOR> Thanks for the comments, everyone! I don't really disagree on the "external factors" (getting a job, providing for your family, etc.). I think their role is overwhelming, and I say that in the post too. My point is simply to consider the role of pedagogy (and contrast the pedagogies of non-mathematical subjects in high schools in the US and India) and wonder if that has a role to play in the fact that so many "bright" students in India end up being engineers and doctors.

Perhaps, there's also a relationship between the external factors (probability of getting a job, job prestige, etc.) in a developing country and the style of pedagogy in schools that cater to the middle class, although at this point, I can't really think of a mechanism that makes things the way they are.

<comment><USER8> I don't believe pedagogy has anything to do with it. I've had classmates who were really good at history and civics but only one of them went on to become a lawyer. The rest of them either became deck officers in the merchant navy or computer programmers. Both professions associated with a lot of money and foreign travel.

</comment></comment><comment><USER11> India and Indians have a long tradition of mathematics and science. Mathematicians like Srinivasa Ramanujan (1887-1920) have iconic status.

<http://en.wikipedia.org/wiki/List_of_Indian_mathematicians>

<comment><USER12> Europe (Euler, Gödel, Erdos, Hilbert, Einstein) and America (von Neumann, Shannon, Feynman) have comparably long traditions and cultural icons. I don't think lack of them is the cause.

</comment></comment><comment><USER13> "In particular, I am interested in understanding why the best and the brightest high school students in the United States usually choose not to become engineers or scientists..."

Really? I guess my experience was different wherein I saw most of those who couldn't cut the math/science classes going different routes. I wouldn't consider those the "best and brightest" by any stretch of the imagination.

</comment><comment><USER14> 1 word. money.

On a more serious note - opening of the IITs allowed mathematically gifted students to become sought-after engineers who emigrated to the US and made loads of money (atleast for the people back home).

Thus it's all relative, engineering as career option bloomed because of IITs were set up. Other disciplines haven't had the same 'luck'.

</comment><comment><USER15> Ignoring the external factors in a country like India, where familial and social pressure are extremely driving forces, doesn't present a great answer to the question in the title of this submission.

<comment><USER16> It also seemed odd to me that it said, more or less, "Pedagogy in both places is the same, so let's examine the effect of pedagogy on student interest." Holding some factor constant won't tell you anything about its effect.

<comment><USER17> It claimed math/science pedagogy is the same, but other pedagogy is different inasmuch as everything else is rote thus boring.

That was its core thesis.

</comment></comment></comment><comment><USER18> With the internet Indian students can overcome their innate geographical disadvantage. Students in western countries don't have to.

The internet knows no boundaries or geography, that's why.

</comment><comment><USER19> 1\. Most people have figured out that large companies (esp. banks) reward those who are able to finagle a way to the top over those who are simply good at doing their jobs, which means that it's economically optimal to spend one's college years making connections and learning how to socialize with rich people. It's hard to do this if you're in a demanding major.

2\. Most people with the talent to pursue science degrees would actually rather be star professors making $150k in complete autonomy than Wall Street star traders making $20 million; at that level, money's fairly irrelevant. However, if look at the median outcome, finance wins. The mediocre Wall Street person still reaches $1 million/year by age 40 or so, while the mediocre engineer is lucky to crack $100k, and the mediocre professor is lucky if he has a job at all.

3\. A lot of Indians and Chinese want the option of coming to the US, at least temporarily. We need engineers, so it's easier for them to get into the country.

4\. Grade inflation, especially in elite colleges. As notorious as the Ivy League is for grade inflation, this is mainly in the humanities (and economics, because they need to have watered-down economics courses for the wannabe banker-douches) and far less prevalent in the sciences. Math courses give a B- or C for mediocre work. Humanities courses give a B+ or A- for mediocre work. The result is that a lot of people walk away thinking they're "just bad at math" because of the B in linear algebra, because a B in their humanities departments is a bad grade, whereas a B in the math course is average or even above average.</comment>


Ask HN: What can a small business do to grow excess cash? - <AUTHOR> I'm self-employed with a web development business structured as an S-Corp.  I maintain a payroll where I pay myself, and contribute towards a retirement savings account, but my business tends to have excess cash that sits in savings.  At this stage, I'm not looking to increase headcount. Is there anything better I could be doing to grow this cash apart from increasing my own payroll and investing it in my personal investment accounts? <comment><USER2> p2p lending

create another business or sell a product(Software or real)

real estate

invest in operational efficiency</comment>