Ask HN: What Is GitHub's Social Impact Strategy? - <AUTHOR> Seems like Github is on a hiring spree in this area and seems to be hiring people who do work in this space.
https://twitter.com/agelender
https://twitter.com/_danilo
https://twitter.com/rachelmyers
https://twitter.com/nmsanchez
Curious what they are upto . <comment><USER2> Their first project looks nice[1]. Hopefully, they'll do similar things in the future.

That list of staff does worry me, though. All of their Twitter streams are filled with counterproductive outrage. To give one example that's related to HN: After Y Combinator posted about diversity[2], @_danilo misconstrued Sam Altman's words to a cynical caricature[3]. Later, @_danilo got in a flamewar with Sam Altman[4].

It'll be great if GitHub can get these people to spend less time being angry and more time working toward productive ends.

1\. [https://github.com/blog/2037-github-is-a-proud- connecthome-p...](https://github.com/blog/2037-github-is-a-proud-connecthome- partner)

2\. [http://blog.ycombinator.com/diversity-and- startups](http://blog.ycombinator.com/diversity-and-startups)

3\. [https://twitter.com/_danilo/status/492764323874222081](https://twitter.com/_danilo/status/492764323874222081)

4\. [https://twitter.com/_danilo/status/492840606054363136](https://twitter.com/_danilo/status/492840606054363136)

<comment><USER3> My impression of [4] is that it amounts to a protection racket scheme: "Your business is racist and sexist! I will continue to denounce it until you hire me." Of course, a lot of consultants will approach companies with a "your business sucks but I can fix it" routine but the difference here is the implicit threat to go on giving the company negative publicity if it didn't pay.

</comment></comment><comment><USER4> Snagging men and avoiding questions [0] and making sexual innuendos [1], while being racist [2]. But it's okay since they redefined the word to not include _their_ form of racism.

[0] [http://i.imgur.com/c9IHbKm.png](http://i.imgur.com/c9IHbKm.png)

[1] [http://i.imgur.com/XPMXW3l.png](http://i.imgur.com/XPMXW3l.png)

[2] [http://i.imgur.com/MBebKrJ.png](http://i.imgur.com/MBebKrJ.png)

Where's that Github Code of Conduct I was looking for again?

 _> Be welcoming: We strive to be a community that welcomes and supports people of all backgrounds and identities. This includes, but is not limited to members of any race, ethnicity, culture, national origin, colour, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability._

Conveniently ignoring: _all backgrounds_ , _of any colour_ , of _any social class_ and _of any sex_. Because they have a personal political beef with certain backgrounds, a certain colour, and a certain sex.

Real productive work, I'm sure.

</comment><comment><USER3> >Curious what they are upto .

I'd answer this question with one word, cynical though the answer may sound to some: signaling. Whatever positive consequences for the socially disadvantaged their efforts might have going about it by hiring loud and popular self- appointed advocates looks a lot like a PR move. There is better bang for the buck in helping the poor in particular (e.g., through the effective charity community) and better expertise available to direct tech projects that might help them but those generally come without the glamour associated with Twitter personalities. Hiring them allows a company to leverage their existing social networks to present a certain image of itself.

</comment><comment><AUTHOR> [https://twitter.com/BiancaCreating](https://twitter.com/BiancaCreating)

</comment><comment><AUTHOR> Whoa I keep finding more people [https://twitter.com/ammeep](https://twitter.com/ammeep)

[https://twitter.com/davystevenson](https://twitter.com/davystevenson)</comment>


Samsung's New TV Ad: Apple Fans Are Whiny Lemmings - <AUTHOR> http://www.macobserver.com/tmo/article/samsungs_new_tv_ad_apple_fans_are_whiny_lemmings/ <comment><USER2> Some of the comments from people in line are funny - it's a clever ad. I just don't think it's gonna do all that much to stem the Apple/iPhone juggernaut any time soon. The ecosystem around the iPhone is enormous - the cases, adapters, accessories all will fit and work with pretty much any iPhone from the last couple of years (tens of millions of them). Some hotels you go to now have alarm clocks with iPod/iPhone docks in them. This is a device which is being ingratiated in to society. A cute ad talking about a bigger screen is probably not going to do much to sway people. Samsung coming up with a truly different experience - say, in the way people buy the device - would get converts. I'm thinking specifically of selling the device with no contract or "subsidized" pricing schemes - just saying, hey this is $199, then taking a cut of sales from an app market (bundle a kick-ass Samsung marketplace app and start courting devs, for example). Or promoting Kindle on the bigger screen and taking a few cents from each Kindle.

Or something - something different from what we've had from phone companies for years. Model XYF573 - rev2! Now with more colors! Oh, and 4G! Then 2 months later that model isn't produced any more, and we're on to rev3, which is a different form factor... wash, rinse, repeat. Yes, I exaggerate slightly, but I got tired of trying to compare all the various specs some time ago.

I was a linux guy for years, and got tired of things not working, not being mainstream, etc. I was a Linux guy when Windows was cool, then Linux when Mac was cool. I finally caved in and went Mac. It's good - nay, just easier - being part of the majority for a while. It's not that I don't think about my tech choices, I just spend more time thinking about stuff at another level of abstraction (get an iPhone, now decide which of the X thousand apps I want to use to make my life better). Getting device X solely because of specs (bigger screen!) generally won't make my life easier/better.

Apple is on top right now, just like MS/Windows was in the 90s. Something will displace them in the next 10-15 years, but it won't be the Samsung Galaxy $MODEL, and it won't be this ad.

<comment><USER3> That's an inadvertently funny post, considering how it reflects the less-than- completely-well-informed opinions of the people in the TV ad. You write "I just don't think it's gonna do all that much to stem the Apple/iPhone juggernaut any time soon." You don't think so? [http://www.telegraph.co.uk/technology/samsung/8855070/Samsun...](http://www.telegraph.co.uk/technology/samsung/8855070/Samsung- overtakes-Apple-smartphone-sales.html)

<comment><USER4> This was before the 4S, which shattered iPhone 4 records.

<comment><USER5> Given that the iPhone is on more carriers and smartphone penetration has dramatically increased in the past year, not shattering the iPhone 4 records would have been a disaster for Apple. We won't know how successful the 4S launch has been until we get data from the next quarter of smartphone sales.

</comment></comment></comment></comment><comment><USER6> MacObserver treat HN like a link dump, upvoting them will only encourage them to keep exploiting HN for traffic and push submissions from legitimate community members out of sight faster.

<http://news.ycombinator.com/submitted?id=jmartellaro>

<http://news.ycombinator.com/submitted?id=digiwizard>

<http://news.ycombinator.com/submitted?id=Semteksam>

<http://news.ycombinator.com/submitted?id=davethenerd>

</comment><comment><USER7> Have personal attacks on a product's customers ever succeeded?

People identify with the products they buy, whether it's a car, a computer, a phone, running shoes, etc.

Have you ever had an argument with someone over their favorite brand? Telling someone they bought the "wrong" brand is basically like telling them they're stupid. Not the best way to endear yourself to them.

SanDisk tried this in 2006 with their anti-iPod campaign "iDon't" that portrayed iPod owners as braying jackasses: [http://www.ilounge.com/index.php/news/comments/sandisk- launc...](http://www.ilounge.com/index.php/news/comments/sandisk-launches- idont-anti-ipod-campaign/)

Sprint did something similar with the Palm Pre in 2009: [http://jaysonelliot.com/blog/2009/06/27/the-wrong-way-to- sel...](http://jaysonelliot.com/blog/2009/06/27/the-wrong-way-to-sell-me-a- palm-pre/)

People want to think of themselves as smart, savvy consumers. When they buy a big-ticket item, they spend time with the advertising AFTER they've already bought it, as a way of reaffirming their choice. When I worked on the Land Rover website from 2008-2010, we found that a significant amount of traffic was from recent buyers. They were coming to the site to feel good about the money they'd just spent.

Negative ads only work in political campaigns, where the goal is to suppress your competitor's turnout.

If you want to beat the competition, focus on your own positives. You can compare yourself to the competitor, but never tell their customers that they're stupid. You might get sales from people that already dislike Apple, but you'll never make a convert with an insult.

<comment><USER8> do you consider the "mac vs. pc" ads effective? Apple made the PC guy look stuffy and naive (although I found him endearing).

<comment><USER7> The Mac vs. PC ads certainly polarized people. They seem to be very popular among people who already own Macs, while PC owners tend to find them smug and off-putting.

The ads seem to be more about attacking the competition than the competition's customers, but they still come off as attack ads, sometimes rather nasty ones.

It's hard to say exactly how effective they were. Mac sales saw a boost during that campaign, but other factors, such as the iPod "halo effect" and much- publicized Windows Vista problems, could be credited as well. Who knows? Maybe they would have sold more Macs with a more positive campaign.

I agree, though, John Hodgman was the more endearing of the two.

Maybe one way to judge the effectiveness of the ads is to look at the careers of Justin Long and John Hodgman—it seems like "PC" came out on top, in their case.

</comment></comment></comment><comment><USER9> One of my favorite things about this ad (which I like for the most part)is the 'See more at facebook.com/samsungmobileUSA' Now there's something Apple would never do. It's a generic, silly idea. I never want to go to a FB page to learn about a product. How about an official website?

As a few previous bloggers have pointed out ([http://digithoughts.com/post/12962540298/apple-vs-samsung- pi...](http://digithoughts.com/post/12962540298/apple-vs-samsung-pictures- from-minimally-minimal)), Samsung needs to seriously simplify its message and product line if it wants to compete.

<comment><USER10> >I never want to go to a FB page to learn about a product.

How young/hip are you? There's a huge market on Facebook, and a huge market that believes Facebook is the Internet. Facebook sells phones.

<comment><USER9> Hm. You must be one of those people who likes that Spotify forces new users to use Facebook.

<comment><USER10> You don't have to use or approve of a product to understand its business model.

<comment><USER9> I just think it's a terrible idea to have a product's front page be a Facebook page.

[EDITED for clarity]</comment></comment></comment></comment></comment>


Sparkfun discovers counterfeit Atmel ICs - <AUTHOR> http://www.sparkfun.com/commerce/news.php?id=384

<comment><USER2> Very interesting post, thanks.

</comment><comment><USER3> spelling error in title, should be "counterfeit"</comment>


10 years of podcasting: Code, comedy, and patent lawsuits - <AUTHOR> http://arstechnica.com/business/2014/08/10-years-of-podcasting-code-comedy-and-patent-lawsuits/

<comment><USER2> Podcasts and Spotify have completely replaced radio for me.

</comment><comment><USER3> Definitely changed the whole driving experience for me.</comment>


Ask HN: Can I Help You With Your Job Hunt? - <AUTHOR>

Hey HN,
After finishing my degree in Comp Sci I trained in technical recruitment. I thought it would be interesting to get paid to understand the industry and learn about the roles that were actually out there, market rates, negotiation skills, interview techniques, resume writing etc.
I enjoyed helping people find their ideal role but disliked most of the way traditional recruitment companies worked (profit over people). I absorbed the useful skills & transferred them into my own career.
I moved into my own technical roles where I've been for the last few years. More recently I've started managing a team of engineers and have found that a lot of the career mentoring advice (what I assumed was common knowledge) to be the most useful.
I have provided highly successful resume assessments in a freelance capacity for a while now and would like to extend this further.
Is there anything I can help with on your current job search?
In return, I'd just like feedback on your progress.
Thanks!
(I'm my username at gmail.com if you want to get in touch directly.) <comment><USER2> Here's one for you: I used to do web/software development then moved into various roles like Architect, Tech PM, and now manage a team of engineers scaling web/db infrastructure and some DevOps stuff.

I work at BigCorp and don't like the prospects of middle/upper management. They seem too far out of touch with reality and don't have marketable skills outside the company (politics, budgeting, etc.)

I want to go back to software engineering/architecture - have done some recent work with Rails and I can pick up new tech pretty quick. The fundamentals don't change and background in CompSci is a great foundation for thinking like a computer.

Some questions: \- I don't have a github or twitter profile or blog. Does this hurt when looking at newer/small and tech-oriented companies? \- I have applied to a few postings (being picky) but generally don't get past tech recruiter. Any tips on "impressing" a tech recruiter to get to the next level? \- I've worked remotely before, have the discipline for that and would prefer it since it opens up many more opportunities. Any tips for applying to these types of roles?

<comment><USER3> I'd love to chat!

<comment><AUTHOR> Great! Drop me an e-mail & we can discuss!

</comment></comment></comment><comment><USER4> I have a somehow good github having contributed to big projects, have dealt with large scale ruby apps, did a lot of projects and development of backend systems in general but can't find my way to get a _very good job_ outside my country. I already make almost as much as I could with a software engineer role in my country. Would your experience in recruiting help me?

I don't mind even to pay you a plus if you get me a good job or have a lunch with you every 6 months to talk with you what's new because for me that's a big endeavor which I can't seen to reach.

Most of recruiters I've seen are only interested in doing the obvious: find candidates inside their home country and there's plenty of recruiters like this. I think that a recruiter that specializes into recruiting people from overseas(and with success) is going to be of value to any company and with a unmatched differential.

<comment><AUTHOR> I'll certainly do whatever I can to help. Feel free to drop me an e-mail. I think a lot of it depends on your expectations of what a _very good job_ is really. Are you looking to relocate or to work remotely?

Is it the increase in salary you're after, different culture, or opportunities perhaps?

<comment><USER4> Different culture, the experience to live abroad. I would rather relocate. I'll send you an e-mail asap.

Thanks!

</comment></comment></comment><comment><USER5> Another one for you - Here is my Ask HN post for some career advice few days back: [https://news.ycombinator.com/item?id=8551407](https://news.ycombinator.com/item?id=8551407)

I would love to get some advice on this, as I am still clueless.

<comment><AUTHOR> I think it's important to project yourself as 'something specific'. What I mean by that is if you attempt to broaden your search and throw everything onto your resume then it will not come across as a focused application. You will get passed over in favour if specialists on most occasions.

By all means have several versions of your resume - perhaps one that brings out your iOS experience that you use for iOS jobs. Another for a different specific focused tech stack or area.

Happy to help you revise your versions if you want to send an e-mail across.

<comment><USER5> Thanks, will send across my resume for review.

</comment></comment></comment><comment><USER6> Good to see someone doing this. I do the same at Nemcv.com, in fact offering people $1000 if I can't find them a job. I have NEVER failed. Amazingly, most people do not think they have a problem with finding a job, they think that there are no jobs out there. But good luck! :)

<comment><AUTHOR> Thanks! Nemcv.com seems pretty smart, do you offer 121 advice alongside the CV builder?

</comment></comment><comment><USER7> How a developer of a country with easy access to VISA's (Chile) can be hired and relocated to the US, Canada or Europe?

<comment><AUTHOR> A route in would be to find a company to work with remotely or maybe multiple contracts. I think it's often hard to get companies to make the leap for an unknown candidate unless you have outstanding experience or rare skills. Best way round this is to keep searching for additional work as an intro to the companies you want to work for in the places you want to relocate to.

</comment></comment><comment><USER8> Are you open to doing resume critiques for students?

<comment><AUTHOR> Sure!</comment></comment>


Inside the haywire world of Beirut's electricity brokers - <AUTHOR> https://www.wired.com/story/beruit-electricity-brokers/ <comment><USER2> I grew up in a village 20 minutes outside of Beirut. We had 3 different power sources: (1) the 'baladiye' (local municipality), (2) the 'dawle' (regional government), and (3) the diesel generator by our house.

Between those 3, we averaged 8-20 hours of electricity per day, but that was out in the mountains. "UPS" to me still means "Uninterrupted Power Supply" \-- a battery box connected to my desktop so that I could save my files and shut down quickly when the power went out.

People who lived on the same power grid as hospitals were typically the luckiest -- they had (almost entirely) uninterrupted power. I have no idea how you're supposed to have a modern economy these days without reliable internet, let alone access to cheap communications (which Lebanon also doesn't have).

<comment><USER2> Also, @Wired:

>Raham, like other operators, complains about repair costs; under-the-table operating fees—essentially, bribes—to the local municipalities in which they operate; the unpaid bills by some of the country's Syrian and Egyptian refugees who are using an estimated additional 486 megawatts; and the increasing cost of diesel fuel to run the generators.

I think you mean Palestinian?

<comment><USER3> Syria is in the middle of a civil war, and borders most of Lebanon - it's estimated there are a 1.5 million Syrian refugees in Lebanon.

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

<comment><USER4> Yes.. GP is correcting _Egyptian_ to Palestinian</comment></comment></comment></comment>


What isn't Telegram saying about its connections to the Kremlin? - <AUTHOR> https://theoutline.com/post/2348/what-isn-t-telegram-saying-about-its-connections-to-the-kremlin <comment><USER2> I told you so!</comment>


Towards Learning From Losing Aaron Swartz: Part 2 - <AUTHOR> http://cyberlaw.stanford.edu/blog/2013/01/towards-learning-losing-aaron-swartz-part-2

<comment><AUTHOR> _Some have blithely said Aaron should just have taken a deal. This is callous. There was great practical risk to Aaron from pleading to any felony. Felons have trouble getting jobs, aren't allowed to vote (though that right may be restored) and cannot own firearms (though Aaron wasn't the type for that, anyway). More particularly, the court is not constrained to sentence as the government suggests. Rather, the probation department drafts an advisory sentencing report recommending a sentence based on the guidelines. The judge tends to rely heavily on that "neutral" report in sentencing. If Aaron pleaded to a misdemeanor, his potential sentence would be capped at one year, regardless of his guidelines calculation. However, if he plead guilty to a felony, he could have been sentenced to as many as 5 years, despite the government's agreement not to argue for me. Each additional conviction would increase the cap by 5 years, though the guidelines calculation would remain the same. No wonder he didn't want to plead to 13 felonies._

And:

 _It is also true that in my criminal law career, I found the U.S. Attorney's office in the District of Massachusetts particularly immoral. In one case, I was told that if my client failed to enter a plea that day, the prosecutor would supercede and add embarrassing pornography charges to my client's computer crime case based on materials allegedly found on his hard drive but never disclosed to me in discovery. Similarly, that office sought to imprison a man for collecting user emails to compile a list of best-selling books, despite the fact that the email collection would have uncontroverably have been lawful had it occurred a nanosecond later. (U.S. v Councilman)._

So, as Granick explains it, it's worse even than we've been led to believe so far.

If you're charged with 13 felonies in federal court and manage to get yourself acquitted from _twelve_ of them --- meaning, in essence, that 92% of the prosecution's claims about you were false --- not only do those acquittals not damage the credibility of the prosecution at sentencing, but because sentencing is based in part on "relevant behavior" not heard at trial, those 12 acquitted charges can come back on you.

But wait, there's more! Sentencing for fraud charges in general and computer fraud in particular is based on a lower burden of proof for the prosecution than conviction is. In sentencing, the prosecution need only establish a "reasonable" estimate of losses, backed by a "preponderance of the evidence". The prosecution is thus free to look at the "costs" of dealing with all 13 of the charges and to come up with some plausible story to turn a few months into years.

This is batshit. If you've committed a felony with a computer, you committed a felony with a computer; the idea that we should scale sentencing based on whether you punched the number "8" or "2048" into the for() loop that got you caught is insane. If crime victims need recourse to make themselves whole for the damages a felony caused, that's what civil courts are for.

<comment><USER3> ... is that first paragraph saying that Aaron couldn't actually have entered a plea on good faith? That, after accepting the plea, things could be flipped on him?

<comment><USER4> It's an uninformed comment by some woman taking advantage of the case to burnish her own image.

 _However, if he plead guilty to a felony, he could have been sentenced to as many as 5 years, despite the government's agreement not to argue for me. Each additional conviction would increase the cap by 5 years, though the guidelines calculation would remain the same. No wonder he didn't want to plead to 13 felonies._

Technically, this is correct, since federal sentencing laws limit the judge's discretion to raise or lower prison sentences. They actually have a _table_ indexed by "points" which the judge must use to determine the length of the sentence. Thus, in order for the prosecution to honor a plea for 6-7 months, it would necessarily have entailed that all of the (other) charges either be dropped or reduced to their misdemeanor equivalents. (Note that if you read her CV, she hasn't handled a case in the federal courts since the sentencing guidelines were issued.)

<comment><AUTHOR> "Some woman"? Jennifer Granick was a friend of Aaron Swartz's, the Director of Civil Liberties at the Stanford Center for Internet and Society, and more or less the go-to lawyer for #hack for something like a decade. That in addition to the fact that she has actually defended computer crime cases against this exact US Attorney's office.

Seriously: find any DMS-100-hacking member of the Masters of Deception from back in the 1990s and ask them to name a lawyer. Jennifer Granick's is the only name you'll hear from more than one person. She represented Kevin Poulson, for fuck's sake.

It seems very unlikely to me that her analysis is less informed than yours. I think you've made a mistake in your analysis here.

</comment></comment></comment></comment><comment><USER5> I disagree with Granick that the problem is with the CFAA. The entire legal system in the US is badly damaged. Fewer than 1 in 50 cases ever goes to trial, for example: [http://www.marcgalanter.net/Documents/papers/thevanishingtri...](http://www.marcgalanter.net/Documents/papers/thevanishingtrial.pdf) This is partly because of a preference for procedural rather than substantive rulemaking under the constitution.

I grumble about this too frequently already, so I'll stop here, but (re)cite two books I think make particularly succinct critiques: _The Collapse of American Criminal Justice_ by Christopher Stuntz and _Adversarial Legalism_ by Robert Kagan. In a nutshell, both argue that the fact-finding role of trial courts (civil as well as criminal) is seriously impeded by the ever-denser thicket of procedural protections, such that a case of any complexity is eventually reduced to a war of legal attrition.

Don't even get me started on the post-trial situation.

</comment><comment><USER6> It is one thing to know that the USA has a larger prison population than any other country in the world. It is another to see how the sausage is made - <USER2> see the process that actually puts people there.

In just a few days I've developed much more severe misgivings about the process that we use to put people in prison than I had before.

<comment><USER7> I read some statistic somewhere that our prison population is more due to the ridiculous sentence lengths than simply putting more people in prison.

<comment><AUTHOR> I dug into this on an unrelated debate on HN a few months back, and while drug charges do make up a large component of the prison population like you'd expect, violent crimes make up the majority. If you dig into local data, a lot of those violent crimes are domestic.

That gives some weight to the idea that the problem is long sentences, but admits some other ideas too, like that our prison population is less the product of criminal statutes or sentencing and more due to economic and educational inequalities. The US is large and diverse in a specific sort of way that may amplify this.

</comment></comment></comment><comment><USER8> "Real reform of the CFAA requires two steps (1) a comprehensive rethinking of the statute, esp. since solving the Lori Drew problem would not have saved Aaron and (2) engaging not with the White House, but with Senator Leahy, who is the policy maker most likely to understand and support these efforts. Nevertheless, I'm going to sign this petition. The White House can know what I think." [https://petitions.whitehouse.gov/petition/reform-computer- fr...](https://petitions.whitehouse.gov/petition/reform-computer-fraud-and- abuse-act-reflect-realities-computing-and-networks-2013/qMvdwVNw)

</comment><comment><USER9> Here's an idea: prosecuting/sentencing based on 'damages' ought to be subject to a hard damages cap based on any civil damages/settlement reached.

After all, the standard of proof in a civil case is lower: "preponderance of the evidence". Negotiation between the affected parties can, at little cost to the government, come to a settlement more easily and fairly than involving the full force/ego/ambition of federal prosecutors.

Sure, criminal prosecutions almost always come first. (The aggrieved parties prefer to have the government take on much of the trial cost, and can use the conviction "beyond a reasonable doubt" to fast-track their later case/negotiations. And even failing a conviction, they can pursue the civil case later.) But it might make sense to reverse that usual ordering, perhaps even by involving some of the public resources in the civil case, as a way of testing the "minimum viable case" before going all-out.

And even if the criminal trial comes first, the full sentencing could be put on hold until civil claims are resolved. That'd lead to more realistic damages/sentencing and an important check on prosecutor discretion in dreaming up massive damage figures.</comment>


VC funding in Asia doubled in Q1 2016 - <AUTHOR> https://www.techinasia.com/hot-asia-vc-funding-doubled-q1-2016 <comment><USER2> VC funding in Asia. Can we get any more vague in news, first of all are they counting the VC going into Turkey and Taiwan in this? Which exact nations are making a cut here? In future, using more specific terms like West Asia, Central Asia would be of greater help, and even better naming the countries.

Asia is probably the most vague terms out there. Its a continent of continents, so being specific helps.

<comment><USER3> Hi @sremani, thanks for your feedback! Yes, Asia here covers countries like Turkey and Taiwan, also Western Asia (Middle East minus Egypt). So, it's basically covers all countries in Asia.

</comment></comment><comment><USER4> I had to write a business plan for a buddy and it was a china based biz, sort of Stripe Atlas for China.

this article is light on details, amd I am no expert as all I know was the 48 straight hours spent researching & writing the goddamn thing. interesting stuff;

* china started the 13th 5 year plan.

* it will agressively invest in itself. as indicated the vc/r&d investment in China by the gov is massive compared to other years.

* teaming up to invest innother countries infrastructure with other developed nations. synical part of me sees this as joint imperialism now China has the tech & influenxe to not be on receiving end.

* total switch to service economy & startup boom gor b2c.

* repeatedly using term o2o (online to offline)

interestingly the idea of a factory was from china keeping foreigners in districts in the late 1600s, these outposts became factories. there were 13 "factories" including one by the east india trading company.

the policy now seems to be similar to the silk road initiative & 13 factory model.

huge changes taking place, China is really adapting quick relative to its size, structure & pop

</comment><comment><USER5> The wording of "doubled in Q1" is quite misleading. It actually doubled between Q1 2015 and Q1 2016. You could say that it doubled in the past year.

<comment><USER6> VC funding is likely seasonal so the best way to compare it would be year over year. The author should have just added a y/y at the end.

<comment><USER3> hi @wtvanhest this article highlighted quarter-on-quarter investment growth. We do publish y-o-y investment growth as well, but in different period. Anyway, thanks for your feedback!</comment></comment></comment>


Differences between expert and novice brains in mice: study - <AUTHOR> https://www.cshl.edu/the-difference-between-an-experts-brain-and-a-novices/ <comment><USER2> I wrote a literature review about this [1] in 2015 I think. I mostly look at support from fMRI studies in Shogi players (Japanese chess). While it was a school assignment, I took it very seriously as I knew the review itself would have very serious implications on my personal life.

Summary:

Main question: how can one develop an effective intuition?

The development of an effective intuition relies on: a high validity environment, a high amount of practice and a high interoceptive awareness. The first two elements account for intuitive answers being right. The third element accounts for the gut feeling being felt by the person. As a result the brain changes, and integrates certain brain areas more into the default mode network. The idea that if one has high activation in a brain area a lot, then the structure will be changed.

High validity environment: rules are easily understandable and deterministic (think chess), or you have _a lot_ of practice moments (think poker). Understanding psychological patients would be an example of a low validity environment.

[1] [https://melvinroest.github.io/articles/intuition.pdf](https://melvinroest.github.io/articles/intuition.pdf)

<comment><USER3> _" As a result the brain changes, and integrates certain brain areas more into the default mode network. The idea that if one has high activation in a brain area a lot, then the structure will be changed."_

In your review you cite cross-sectional research, not a longitudinal, within- subject effect of change with study/practice/learning. Therefore your conclusions should not be about change, but on group differences. Those difference might have arisen from the training, or pre-existed in those individuals that were more prone to study/practice/learn/meditate.

Post-Note: Sorry. As a developmental neuroscientist, you hit on a pet-peeve. Cheers.

<comment><USER2> Fair enough, in group differences it's tough to be certain about causality. It's interesting that my teacher never gave this as feedback. Well, that just shows that when it comes to HN, people simply care more about science (as my teacher was a neuroscience researcher).

Personally, I do think the brain is plastic in this sense though. I haven't looked deep enough into it to be a 100% certain. Nevertheless, from all the research summaries I read, I gather that whenever a skill is practiced in a focused manner for 1 to 2 hours, neural plasticity occurs.

I wish there was a literature review around this idea. But I got the feeling that 4 years ago the literature was mostly on clinical patients. Normal people and neural plasticity seems to be researched less well.

</comment></comment></comment><comment><USER4> An expert having learned a magnitude more has magnitudes more experience than a novice. This education and experience has taught him (or equally her) how much there is left to learn and how little we really know. In our field, we have learned humility... no, not really learned, so much as have had it beaten into us so harshly that there's no ignoring it. It becomes a part of us.

Conversely, this lack of experience and humility and the bubbling exuberance and over abundance of confidence that comes with inexperience tempts people to walk a path that someone with more experience dare never venture. It's these paths that help move us forward into the unknown.

Our confidence comes from different places. An expert's from the confidence that they know their place in the world. They've learned their reality, they've learned to build tools to deal with and capitalize on that reality. Their experience has taught them how to survive and, if they're lucky, prosper. While a novice's confidence is often borne out of idealism, hope, arrogance, ego and sheer audacity.

There is not only room for this in the world but, I believe, a need for it. That we _need_ each other for humanity to move forward.

<comment><USER5> Not sure about the top part. I know several programmers, mathematicians, etc. who think they are geniuses and other fields are trivial.

<comment><USER4> Some people I guess never grow out of their ego... perhaps it's my naivete, but I'd like to think they're the exception rather than the rule.

<comment><USER6> What comes first, the limited perspective or the ego?

</comment></comment></comment></comment><comment><USER7> So basically pruning the neural network makes it faster. Isn't this effectively what we are doing since birth? As babies we just have a bunch of semi-random connections, and then we prune away as we learn.

And in AI it's basically the same. The fewer number of hidden nodes in your neural network the better, as long as there are enough nodes to accomplish the task.

<comment><USER8> Except the mind is creating new neural connections throughout life. The idea that neuroplasticity is a baby's only phenomenon is a common myth. In fact, we can see new connections being formed whenever new skills and memories are formed in the elderly, and everyone has the capacity to make new connections at any time. Sure, the RATE of those connections being made is lower over time, we are constantly decelerating in our ability to add new skills.

<comment><USER7> Making new connections doesn't preclude pruning old ones (or pruning new ones for that matter). And in fact the brain is doing both all the time.

I just didn't think it was relevant to this discussion to go deeply into the details of neurogenesis.

</comment></comment></comment><comment><USER9> A really good book on this is "Pragmatic Thinking and Learning: Refactoring Your Wetware" by Andy Hunt (of the Pragmatic Programmer series of books). I particularly like the explanation of the Dreyfus model of skill progression: Novice, Advanced Beginner, Competent, Proficient, and Expert.

<comment><USER10> I've heard some very vague grumblings about the Dreyfus model but never worked up the motivation to actually dig into them.

But the first thing I noticed is that here's a guy writing a paper about skill progression and he hasn't encapsulated the act of writing a paper about skill progression as a progression of its own.

I suspect it's more like Novice, Advanced Beginner, Competent, Proficient, Expert, Artist, Philosopher.

</comment></comment><comment><USER11> I like the four stages of competence ([https://en.wikipedia.org/wiki/Four_stages_of_competence](https://en.wikipedia.org/wiki/Four_stages_of_competence)) which reads:

1\. Unconscious incompetence The individual does not understand or know how to do something and does not necessarily recognize the deficit. They may deny the usefulness of the skill. The individual must recognize their own incompetence, and the value of the new skill, before moving on to the next stage. The length of time an individual spends in this stage depends on the strength of the stimulus to learn.[5]

2\. Conscious incompetence Though the individual does not understand or know how to do something, they recognize the deficit, as well as the value of a new skill in addressing the deficit. The making of mistakes can be integral to the learning process at this stage.

3\. Conscious competence The individual understands or knows how to do something. However, demonstrating the skill or knowledge requires concentration. It may be broken down into steps, and there is heavy conscious involvement in executing the new skill.[5]

4\. Unconscious competence The individual has had so much practice with a skill that it has become "second nature" and can be performed easily. As a result, the skill can be performed while executing another task. The individual may be able to teach it to others, depending upon how and when it was learned.

<comment><USER12> > 4\. Unconscious competence

This can end up being an uncomfortable position when people ask you to explain exactly why you made a decision, and even though you probably could explain it with some effort, it's difficult because you made your choice based on experience-derived intuition. Being at the conscious competence stage may actually require less work in general, unless one gets to work with other unconscious competent people.

<comment><USER13> I have this a bit with the Object Oriented Programming principles.

The code structure just needs to feel right. It's hard to throw principles at it to show which structure is better. To me it always feels like there are so many aspects to take into account, that cannot just be expressed by priciples.

Some code feels right, and some doesn't. Sometimes extending code "falls into place" and confirms that your previous reasoning was the right one. And other times it just remains a complex mess ;).

<comment><USER14> This is why language tests like TOEFL and IELTS have 2 levels of mastery _above_ native language speaker.

When you're a native English speaker, you're in the unconscious mastery phase for the most part. Things feel right or wrong.

The 2 levels above are being able to _explain why_. That's when you're at the "able to teach English" level.

I think the same applies to code. You can be very very good at something, but _true_ mastery is being able to impart that knowledge on others as well.

<comment><USER15> > You can be very very good at something, but true mastery is being able to > impart that knowledge on others as well.

Is that true though? How do we know that the ability to teach is not a unique skill in and of itself rather than just an extension of one's "mastery"?

Anecdotally, I've engaged with "masters" of various fields as different as blacksmithing to theoretical physics. Of these "masters", I've encountered good teachers and bad. But I've not personally felt any correlation between their mastery of the subject (i.e. their ability to produce results in the area) vs. their ability to teach the area.

<comment><USER16> I think it makes sense, because if you know the right choice wihout being able to explain why, you also can't easily realise if this case is in fact an exception to the usual case from your experience.

<comment><USER15> > because if you know the right choice wihout being able to explain why

But teaching isn't simply being able to explain why something is the way it is. It's more than that.

I could explain to you why planets move the way they do by using the language of tensor fields built up out of tensor products mapping vectors to their duals. It would be a thoroughly accurate definition of why we see the movement we see but it would not necessarily be a good way to teach. Particularly if the recipient of the teaching wasn't familiar with the formalism of general relativity.

It's this aspect, that teaching is more than simply understanding that makes me think it potentially could be orthogonal to mastery of a subject.

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> When I was young, I said to God, 'God, tell me the mystery of the universe.' But God answered, 'That knowledge is for me alone.' So I said, 'God, tell me the mystery of the peanut.' Then God said, 'Well George, that's more nearly your size.' And he told me. -George Washington Carver

<comment><USER18> The joke's on God. To truly get to the mystery of the peanut you have to go through the mystery of the universe!

<comment><USER3> This is pretty close to truth. And if all laws of physics at at work within the peanut, then all laws of the universe would be unlocked. Quite clever.

</comment></comment></comment><comment><USER19> "An expert is a person who has made all the mistakes that can be made in a very narrow field."

― Niels Bohr

<comment><USER20> _an expert is someone who knows more and more about less and less, until finally he knows everything about nothing_.

But more seriously from Suzuki:

 _the beginner 's mind has many possibilities, the expert's mind has few_.

From the wonderful book "Zen mind, beginner's mind"

<comment><USER21> Important note for those unfamiliar with Suzuki: this quote is usually understood to be praising the beginner's mind, which is full of possibilities and without prejudice,[0] and pointing out the weakness of the expert's mind.

[0] [https://en.m.wikipedia.org/wiki/Shoshin](https://en.m.wikipedia.org/wiki/Shoshin)

</comment></comment></comment><comment><USER22> For a laymen like myself, I fail to see how this is anything more than additional evidence for Pavlovian response. Are you an "expert" when you learn that a specific pattern of actions results in a reward? That's all that's going on here -- lick the correct water spout according to the pattern of flashing lights, get a reward.

How about an MRI of a newbie in flight school and an MRI of a seasoned pilot. What does that show in terms of neural development and associated pathways? What does the newbie's brain look like after extensive training? Can you measure neural pathways over many years and see how they grow or change?

</comment><comment><USER23> I'm not an expert in ML or mice intelligence, but it sounds like some of the concepts have a mapping in ML. The author describes a faster decision making process happening in advance of the actual decision. This sounds like the development of a LSTM, where the contextual inputs leading up to a decision are encoded in the network. The author also describes an inhibitory network. This reminds me of a GAN, where the adversarial network is discriminating on whether or not the decision will be a good one based on its knowledge.

</comment><comment><USER24> So let me get this, if too many neurons firing then it means it is a novice's brain and less neurons firing (targeted firing) means an expert, is that right?

<comment><USER25> When given a problem, an expert might be able to solve it by recalling the solution to another problem he solved earlier, while a novice has to actually solve the problem.

</comment></comment><comment><USER26> "In the novice's mind there are mang possibilities; in the expert's mind there are few."

<comment><USER27> That's absolutely the case for a novice chess player vs expert.

A novice will see so many pieces. So many possibilities. They have no idea how to choose between them. And there are so many, they'll fail to see an excellent move, or that one of their pieces is about to be killed.

An expert sees far fewer moves, and so is able to look much further ahead.

</comment></comment><comment><USER28> Maybe the title should indicate this is about an "expert" mouse.

<comment><USER29> I'm imagining Splinter from ninja turtles.

<comment><USER30> Splinter is a rat, though. For expert mice, you probably can't beat these guys:

[https://hitchhikers.fandom.com/wiki/Mice](https://hitchhikers.fandom.com/wiki/Mice)

</comment></comment></comment><comment><USER31> Is the rat aware he's being used for a scientific experiment for human entertainment and a stepping stone to the mass enslavement of other species?</comment>


Show HN: Open source graphing calculator - <AUTHOR> https://www.numworks.com/ <comment><AUTHOR> Note, this is _not_ a calculator I designed it is one that the folks at ST Micro brought to my attention and I felt that the community here would be interested.

I've been building a "PC" with the same chip (the STM32F4) for many of the same reasons the Numworks folks picked it. (good documentation, interface options, Etc.)</comment>


Ask HN: I want to run multiple sites – should I have multiple corporations? - <AUTHOR>

I'm wondering if there is a point to having multiple corporations for a single individual, if they are all basically just websites/blogs. The only thing that worries me is the apple/google store that will list a weird company name for the reader for each site that I want to publish.<p>Is this a real problem? How different/risky does the site have to be to justify it? What's your experience? Any links to anyone else dealing with this? <comment><USER2> If your only problem is appearances, like on the Google or Apple app stores, you could file multiple Doing Business As (DBA's). The law on this depends on where you are actually incorporated. <http://en.wikipedia.org/wiki/Doing_business_as> But if their are broader liability issues with each of the sites, I would definitely maintain a separate corporations (this doesn't sound like its the case if they are just blogs).

</comment><comment><USER3> Setting up multiple corporations for multiple sites is like setting up multiple companies for multiple products.

You can set up one company and produce several lines of related or similar products. Unless the products or sites are highly different from each other (Ex one from health care industry and other one from entertainment) you do not need to set up multiple corporations. So it is a bad idea. Think about tax implications and paperwork involved.Try to run a single entity and you will know how much work does it involve.

There are lot of media outlets out there with several sites, magazines or product but with just one corporation.

P.S- This is not a legal or professional advice. Seek advice from experts.</comment>


Trump to Apple: 'Make your products' in the US to avoid tariffs - <AUTHOR> http://thehill.com/policy/finance/405707-trump-to-apple-make-your-products-in-the-us-to-avoid-tariffs <comment><USER2> I remember reading a story about the manufacturing and shipping of the first iPhone. Late into the process, Steve Jobs threw a (justified) fit over the fact that the screen was to be made of plastic. He (rightly) complained that people would be putting the phone in their pockets with their keys, and the thing would be scratched up in no time. This, he declared, would not do.

So, what happened next, in short, is that the Chinese factory was contacted and—in order to keep to schedule, which Apple refused to change—the foremen woke up all the line workers, who were asleep in their company provided dormitories, roused them out of bed, told them that there was time enough to get dressed and have a quick cup of tea, after which they would have to get their selves onto the assembly line and start work immediately, as there had been a big change.

This is not going to happen in the United States—ever. And this, above all else, is a big reason why companies want to use Chinese manufacturing.

I share this only to raise the point that we live in interesting times, and they're about to get even more interesting.

<comment><USER3> Horrible that a work force essentially kept in company camps can be woken in the night to get back to work because a higher-up decided to change something obvious last-second.

I would hope this would not happen in 'Merica.

<comment><USER4> Well, they're from villages all across China. They need somewhere to live and it might as well not have a commute.

Nearly every large employer in China has employee housing of some sort, including government agencies. Every single manufacturer has dorms.

<comment><USER5> I think the issue is more that the employees are on-call 24/7\. On-site housing is just a way to make that happen.

<comment><USER2> I used to work for a catering hall that was, decades ago, a resort. The cottages on the property, that once used to house guests, housed the (illegal alien) kitchen workers. The owner (and his managers) used to wake everyone up and get them into the kitchen, unexpectedly, if something went wrong—which might mean only management's planning.

It cannot be ignored that—however convenient it may be for workers—the arrangement is easy for management to abuse.

</comment></comment></comment></comment></comment><comment><USER6> By now the Chinese are going to have a lot of modern high-tech mass-market manufacturing know-how that is likely lacking severely in the United States. Not to mention the logistics of building that kind of supply chain from zero and overnight, or the fact that 95% of the world's rare-earths originate from China - many of which are necessary to build iPhones etc.

Good luck with moving all that to the US!

<comment><USER7> The supply chain issue is not rocket science we already do that with cars.

Rare-earths are not actually rare.

The know-how is kind of a problem, but it's really the cheap labour, the zero rights they have (i.e. work now for 12 hours a day no bathroom break), the externalization of things like pollution etc..

It's possible to move most of that to the US ... but it would be complex and expensive. There's no reason to do it today.

<comment><USER8> Reducing dependency on an exploitative, rights-abusing, polluter nation seems like a good reason to do it today?

<comment><USER7> Of course it does, I was being cynical about 'no need'. This is the position of big business and free traders.

Trump is right on some level to want to bring some manufacturing home, I just don't think he's smart enough to consider how, what or why.

</comment></comment></comment></comment><comment><USER9> >"It is difficult to see how tariffs that hurt U.S. companies and U.S. consumers will advance the Government's objectives with respect to China's technology policies," Apple

Wow. Then they are not trying very hard. The tariffs put pressure on China's supply chain. Too expensive in China, then manufacturing to Vietnam hurting the Chinese economy. Let's remember nothing has worked with China before.

We talk about low consumer prices like this should dictate all of our policies but who cares about low prices on electronic goods if you don't have jobs to pay for housing, education, and food.

</comment><comment><USER10> An article I read about those tariffs, but I don't remember where, raised an interesting point: even if they wanted to, how are Apple, and other companies, supposed to find the millions of workers this would require, when unemployment is rather low?

<comment><USER9> Robots?

</comment></comment><comment><USER11> It will sure be interesting to see if they go through with this, or if Apple will keep making their devices in factories with suicide prevention fences.

</comment><comment><USER12> And meanwhile Trump raised tariffs on intermediate products not final products.

<comment><USER13> Yes, I run a small synthesizer company on the side and do our own assembly, which has become 30% more expensive because the tarrifs cover things like capacitors, resistors, potentiometers, which are all components for our products.

We've always done our own assembly to ensure quality, and to reduce costs... But now because of these tarrifs we are considering shutting down or possibly off-shoring assembly.

<comment><USER14> Oh cool, which company?

</comment></comment></comment><comment><USER15> One likely scenario if Trump continues to get his way is that we're going to see a generational downturn. Such a thing has been a normal, healthy part of our economy historically. Perhaps we will see five years of a nasty bear market which we have not seen in a long time. It will be the buying opportunity of a lifetime.

The new reality of America first will require a serious growing pains. Such as Apple and other companies fundamentally thinking how they approach manufacturing

<comment><USER16> Our generational downturn is already being caused by housing policy and the highly wasteful healthcare and education sectors. Bringing some manufacturing in-house won't do anything on that scale.

<comment><USER15> There's no such downturn yet

<comment><USER16> Well, you might want to look at the age people are having kids in some parts of the country.

</comment></comment></comment></comment><comment><USER17> I don't understand why Congress doesn't Article I, Section 8, Paragraph 1 Trump into line. The president should not have unlimited, unchecked power to do anything by just appending "because national security" to an executive order.

<comment><USER18> He's letting the GOP, which controls congress, mostly get what they want, so it wouldn't make any sense to cut him off. In addition his popularity _among their base_ is still quite high, so again, why cut him off.

(Nothing in the above statement above should be taken to imply that I oppose _or_ support any member of the legislative or executive branches.)

</comment></comment><comment><USER19> Google to Apple: Don't cave. This moron will be out of office before the end of the year.

<comment><USER20> It wont be that soon.

<comment><USER21> Rejoice fellow americans: Trump is the proof you have a solid democracy with strong institutions. Russia messing around and mingling on everything and you still manage to stay on top. Kudos for you, with a little jealousy, because I am Brazilian, and we remove presidents every once in a while (twice since I started voting). For MUCH less.</comment></comment></comment>


Amazon CEO Jeff Bezos' Annual Shareholder Letter - <AUTHOR> http://www.sec.gov/Archives/edgar/data/1018724/000119312514137753/d702518dex991.htm

<comment><USER2> So many interesting tidbits. Bezos seems to have built a company that's constantly tinkering, experimenting, and improving.

e.g. under "Fulfillment Innovation": Our operations team is extraordinary – methodical and ingenious. Through our Kaizen program, named for the Japanese term "change for the better," employees work in small teams to streamline processes and reduce defects and waste. ... In 2013, more than 4,700 associates participated in 1,100 Kaizens.</comment>


Stanford videos on Entrepreneurship  - <AUTHOR> http://ecorner.stanford.edu/index.html

<comment><USER2> I was looking for this just the other day on iTunes U and the Stanford website but couldn't find it. Thanks for this link =)</comment>


New Mutations at Different Speeds - <AUTHOR> https://elifesciences.org/digests/46922/new-mutations-at-different-speeds <comment><USER2> Wow this is super interesting. It's pretty obvious that parents are getting older and older. It has been theorised that the association of increasing paternal age with risk of autism is related to more de novo mutations in sperm (which continues to be generated throughout a male's life time, and thus acquires more mutations with age).

This sounds like some kind of trans-generational trap, where each generation of older and older parents has children with more and more de novo mutations which increases the risk of deleterious effects. This concept is not at all proven [1]. But this work shows that it isn't so simple in any case, and age has much less impact in some families.

[1] There are some crackpots (often with a racist or misogynistic agenda) that think this kind of effect will lead to the collapse of humanity, and try to justify what essentially amounts to eugenics to deal with it.</comment>


Apple Pay finally launches in Germany - <AUTHOR> https://techcrunch.com/2018/12/11/apple-pay-finally-launches-in-germany/ <comment><USER2> Finally. Card activation was only possible by calling my bank and for now this only works with the credit card, not my debit card.

Using my series 1 watch at the supermarket later worked like a charm.

Great experience!

Looking forward to me educating cashiers about this for the next couple of months (still have some of them trying to grab my card)</comment>


Trying out Visual Studio Online, using the cloud to manage and compile your code - <AUTHOR> https://www.hanselman.com/blog/TryingOutVisualStudioOnlineUsingTheCloudToManageAndCompileYourCodeIsAmazing.aspx <comment><USER2> There has to be a parallel universe where Microsoft improved upon Windows and Visual Basic instead of regressing back to the 60s in terms of programming technology. I wonder if they're having fun over there.</comment>


London, Riots & Social Media: This Week in Online Tyranny - <AUTHOR> http://www.readwriteweb.com/archives/london_riots_social_media_this_week_in_online_tyra.php#.TkMhH6UXwGw.hackernews <comment><USER2> Because nothing says 'freedom' like looting and torching your neighbors' businesses and the homes of the people that live above them.</comment>


DeviceJS is Javascript for the Physical World - <AUTHOR> http://devicejs.org/ <comment><AUTHOR> "DeviceJS is a JavaScript based development platform for reacting to sensors and controlling devices. It's built on top of Google's V8 JavaScript engine, Node.js and a real-time JSON database."

Fascinating. JavaScript really is slowly becoming the lingua franca of everything.

<comment><USER2> Atwood's law keeps on showing itself to be more and more prescient.

<comment><USER3> Just looked that up, but it seems like more of an argument for "most universally executable language" rather than "least powerful".

The problem with Javascript ironically is that in some ways it is _too_ powerful. People want a simple scripting language with a basic type system but instead get a psuedo-functional/psuedo-OO language with a type system construction kit.

JS programmers and library designers seem to expend a lot of effort beating JS into the sort of language they want to use, the result is that many JS programs may as well have been written in entirely different languages.

<comment><USER4> Maybe due to that flexibility, it becomes the language they want. Where as other languages don't offer what they need/want.

Many people look at JavaScript's flexibility as a bad trait, but to skilled programmers, it becomes a great tool.

<comment><USER3> That may be true, but the principle of least power is all about picking low powered languages so that the programs become extensible to people with lower skill.

</comment></comment></comment></comment></comment><comment><USER5> Interesting concept but weird choice of language. Yes, JS is popular, but that's because it's the only language supported universally by all browsers. And now people are moving away from it (CoffeeScript, Dart, etc), this project embraces JS. Or maybe JS is now the new JVM?

<comment><USER6> Javascript appears to be a language that everyone knows or has used at some point of time. It is ubiquitous because of the web. As opposed to Lua, Scheme, Scala, Python, etc., this will expose it to all programmers.

It is one of the best languages for scripting and event based management of objects.

Also as LLVM is maturing, it will be easy to build a layer on top of it for most popular languages - if at all needed - though that need would only be for comfort and previous exposure to that language than anything else.

May be that is why Javascript was chosen.

</comment></comment><comment><USER7> My curiosity is piqued but I'm at a loss. Where's the code? I read the page a couple of times but I don't see any links to code or anything.

</comment><comment><USER8> Besides the argument about JS, the thing that is holding me back the most is their "cloud service".

"The Relay connects WigWag and third party devices to our cloud service, which allows your stuff to interact with many Internet services, such as email, Dropbox and Twitter. It also makes your sensors work together, so they and the rules they activate are smarter."

I can't really understand why this cloud connectivity is required? But personally I feel quite some reservation towards storing this kind of data remote.

</comment><comment><USER9> We've ufortunately DDoSed the site.

From Google cache: [http://webcache.googleusercontent.com/search?q=cache:mr8RddZ...](http://webcache.googleusercontent.com/search?q=cache:mr8RddZk- rUJ:devicejs.org/status/+&cd=1&ct=clnk)

This is not available yet, and appears it will only run after the developing company, WigWag, completes their Kickstarter campaign and start shipping products.

The nice thing though is that besides being able to run on their proprietary device, it will also run on Raspberry Pi.

</comment><comment><USER10> Do this today with Johnny-Five: [https://github.com/rwldrn/johnny- five](https://github.com/rwldrn/johnny-five)

<comment><USER11> Johnny 5 is a great project with some realy smart people, but I don't like how it abstracts arduino so much. I prefer just messaging with node-serial.

<comment><USER10> The abstraction is the whole point, so I guess you either love it or you don't ;)

</comment></comment></comment><comment><USER12> No kudos for picking the worst language around to run on hardware which may have mission critical requirements. When a device sensor heart rate stops reporting data, will your JS code return undefined, null, NaN, 0 or something else? Who needs mature error handling? Low memory requirements? No problem, v8 will have a reasonable memory footprint by 2024.

<comment><USER13> Because as we all know, code written in C can't ever crash or suffer from memory leaks.

I don't think anyone's advocating JS for life-and-death use cases. It's all about the right tool for the job, there's no reason to write off any particular language or environment _a priori_.

</comment></comment><comment><USER14> How do you deal with numbers that cannot be precisely represented by a 64-bit float? There are many sensors that require much higher precision. If Javascript's extremely idiotic number issue ever gets fixed, then I think this is a great. But until then, I don't see the point of using Javascript for sensors.

<comment><USER15> While it's not a great solution, and is rather clunky, this can be overcome by buffers/typed arrays.

</comment></comment><comment><USER16> Is there a project like this, but Lua instead of JavaScript?

<comment><USER17> I agree. Lua is the perfect language for this.</comment></comment>


Show HN: PacketStream – World's First Opt-In Residential IP Marketplace - <AUTHOR> Hi Hacker News!
We're Ronald and Arthur. Co-Founders of PacketStream (https://packetstream.io)
We've created the world's first marketplace for residential proxy bandwidth.
Our residential proxy marketplace allows our customers to anonymize web activity and appear to endpoints as if their traffic is coming directly from residential ISPs. Our proxy tunnel and Packeter matching system routes customer traffic through our network of Packeters before relaying requests to endpoints. HTTP endpoints see a very normal request coming from a residential IP address.
Typical use-cases for consumers include: - Anonymizing browsing behavior and location data while surfing - Accessing global content like streaming services - Preventing unfair blocks/bans/recaptchas - Getting paid to share your bandwidth with the PacketStream network!
Typical use-cases for businesses include: - Web scraping - Ad fraud identification - Competitive intelligence research - Price comparison - Internal product testing
With PacketStream, endpoints can't see that traffic is being relayed through a middleman. We're big fans of privacy products like Tor and VPNs but we've experienced the pains of trying to use them on a day-to-day basis. Constant captchas & access restrictions make current anonymization products very inconvenient. We believe users shouldn't be punished for trying to anonymize their browsing and opt out of data-collection.
Our competitors resell bandwidth from questionable sources. Packeters on our platform are fully opt-in and understand the business model. We've tested similar offerings from competitors in the past and felt very uncomfortable about indirectly purchasing blackhat botnets and using household internet connections without the knowledge of their owners.
Residential relays are fascinating to us and we've built a model that's ethical and benefits both sides.
We'd love to hear what HackerNews thinks about our service & this industry as a whole. <comment><USER2> What about abuse & TOS violation?

I commend you on clear pricing but the 90% cut looks kind of insulting even though I can imagine that it's justified.</comment>


How many users do you need to prove a concept? - <AUTHOR>

I am working on a newfangled messaging app and am curious how many users I need before I can consider my concept proven?<p>I think this information would be helpful to other HN members as well! <comment><USER2> I don't think there is a "magic number" although I do think having 10 or 20 people giving you your credit card or cash is enough to get started. (e.g. Groupon sold its first deal—two pizzas for the price of one—in October 2008. Twenty Chicagoans bought in and trekked to the Motel Bar, located . . . on the first floor of Groupon's building.)

Although I will say that you might be looking more for a number like Amy Hoy's 30x500 - as 500 people at $30 = $15k MRR

Just a thought.</comment>


Cancelable Promises: Why was this proposal withdrawn? - <AUTHOR> https://github.com/tc39/proposal-cancelable-promises/issues/70 <comment><USER2> Promises have always been extremely contentious in JS for a couple reasons and Domenic has had the patience of a saint getting the original proposal through so it's totally understandable that he might not want to deal with this anymore especially if people in his org are against it.

There were a couple reasons the original promises were so contentious to standardize.

\- Monads: there was a very vocal faction on TC-39 that really wanted a Promises to be monadic and very much emphasized mathematical purity over usefulness and any attempt to discuss things tended to get side tracked into a discussion about monads, see brouhaha over Promise.cast [1].

\- Error handling: Promises have a bit of a footgun where by default they can swallow errors unless you explicitly add a listener for them. As you can theoretically add an error listener latter on all other options had downsides (not always obvious to advocates) leading to a lot of arguing, must of it after things had shipped and realistically couldn't be changed. Fixed by platforms and libraries agreeing on a standardization of uncaught promise events [2].

\- Just an absurd amount of bike shedding probably the 2nd most bike shedded feature of the spec (behind modules).

So cancelable promises reignite all the old debates plus there's no obvious right way to do it, like should it be a 3rd state which could cause compatibility issues and would add complexity, or should cancellations just be a sort of forced rejection, which would be a lot more backwards compatibility but with less features.

Additionally there is a bizarre meme that somehow observables (think event emitters restricted to a single event or synchronous streams that don't handle back pressure) are a replacement for promises or are a better fit for async tasks they should be used instead.

edit: patients => patience

1\. [https://esdiscuss.org/topic/promise-cast-and-promise- resolve](https://esdiscuss.org/topic/promise-cast-and-promise-resolve)

2\. [https://gist.github.com/benjamingr/0237932cee84712951a2](https://gist.github.com/benjamingr/0237932cee84712951a2)

<comment><USER3> > _Monads: there was a very vocal faction on TC-39 that really wanted a > Promises to be monadic and very much emphasized mathematical purity over > usefulness and any attempt to discuss things tended to get side tracked into > a discussion about monads, see brouhaha over Promise.cast_

Monads are about usefulness, because a type being monadic means there is a bind/flatMap operation you can rely on to have a set of laws. So a Promise being Monadic means that it is _lawful_ and more _composable_. And it is especially relevant in the context of a Future/Promise. Aren't you tired of Javascript Future/Promise implementations that are broken?

Like, please learn about the concept.

<comment><USER4> I don't get the value of composability and refuse to learn, and "monad" and "laws" sound like math which I don't want to understand. So instead of attempting to comprehend what this is about I'm just going to make fun of you in a comment.

<comment><USER5> I don't see a lot of point in making better programming concepts seem accessible, and "try to meet people where they are" sounds like populism which I don't want to understand. So instead of attempting to argue that there's value in the idea in a way that doesn't put people off with an implicit accusation of lazy ignorance, I'm just going to go with the implicit accusation of lazy ignorance.

</comment></comment></comment></comment><comment><USER6> It sounds like some Google employees on TC-39 had significant resistance to the idea, and it is worrisome that employees of a private company can block proposals in favor of "their" way, in what is supposed to be an open and transparent Technical Committee, for a language that is supposed to be for all of us.

Google trying to strong-arm control of JS for themselves.

<comment><USER7> From the Github comments:

"One of the important priorities in TC39 is to achieve consensus - which means that any employee of any member company can always block any proposal. It's far far better for anyone to be able to block, than to arrive at a spec that "not everyone" is willing to implement - this is, by a large large margin, the lesser evil, I assure you."

<comment><USER8> This is why you don't do development by standards committees. It never ends well.

<comment><USER9> You miss the point that TC39 uses a champions model: 1 or 2 people who do design, with the committee reviewing.

That broke down here, to the extent that the champion, Domenic, withdrew under some kind of internal (to Google if not his own state of mind) duress. TC39 never had a chance to consider the argument or whatever it was that caused this.

More to say after January's meeting, I'm sure. I'm not going to throw stones at Google but it would not surprise me if there were backroom objections. If so, they should be brought to the committee cleanly. There is still time.

<comment><USER8> Do the champions provide an implementation of the proposal for the committee to review?

<comment><USER9> See [https://tc39.github.io/process-document/](https://tc39.github.io/process- document/). To get real engine implementations may take cooperation among champion and one or two browser vendors, as the "real engines" (meaning ones that can be tested against the Web at scale) are all owned by browser vendors.

Examples:

* SIMD started from Dart's proposal, which John McCutchan then championed at first for JS, and later handed off to others. Intel, Mozilla, and Google all cooperated.

* ES6 Proxies, where Mark Miller and Tom Van Cutsem were the champions and did a terrific job covering the design space and finding the sweet spots. Andreas Gal implemented in SpiderMonkey and then the spec changed, based on the implementation (but in a mostly co-expressive way, for wins beyond expressiveness; the new proxy implementation layered on the internals of the old). Proxies were quite challenging as they exposed observable internal order of operation details and required reformulating spec-mandated invariants that matter for not only interoperation but also security.

</comment></comment></comment></comment></comment></comment><comment><USER10> promise for cancelable promises has been cancelled, how poetic

<comment><USER11> And the author unsubscribed from the subject.

Context: [https://github.com/tc39/proposal- observable/pull/97](https://github.com/tc39/proposal-observable/pull/97)

</comment></comment><comment><USER12> TC39 member here.

cwmma gets a lot right here: Promises have always been contentious in JS (and TC39) and Domenic has indeed had the patience of a saint attempting to wrangle the various points of view into a coherent proposal.

TC39 as a group is generally very motivated to find positive-sum outcomes and find solutions that address everyone's constraints in a satisfactory way. That doesn't usually mean design-by-committee: champions work on a coherent design that they feel hangs together, and the committee provides feedback on constraints, not solutions.

As a member of TC39, I'm usually representing ergonomic concerns and the small-company JavaScript developer perspective. I've had a lot of luck, over the years, in giving champions my perspective and letting them come back with an improved proposal.

The staging process (which I started sketching out on my blog[1]) has made the back-and-forth easier, which each stage representing further consensus that the constraints of individual members have been incorporated.

Unfortunately, I fear that promise cancellation may be a rare design problem with some zero-sum questions.

It's worth noting that there has been no objection, on the committee, to adding cancellation to the spec in some form.

The key questions have been:

First. Is cancellation a normal rejection (a regular exception, like from `throw`) or a new kind of abrupt completion (which `finally` would see but not `catch`). The current status quo on the committee, I believe, is that multiple people would have liked to see "third-state" (as Domenic called it) work, but the compatibility issues with it appear fatal.

Second. Should promises themselves be cancelled (`promise.cancel()`) or should there be some kind of capability token threaded through promises.

What that would look like:

        let [sendCancel, recvCancel] = CancelToken.pair();
        fetchPerson(person.id, recvCancel);

        async function fetchPerson(id, token) {
          // assume fetch is retrofitted with cancel token support
          let person = await fetch(`/users/${id}`, { token });
        }

        // when the cancel button is clicked, cancel the fetch
        cancelButton.onclick = sendCancel;

This approach had many supporters in the committee, largely because a number of committee members have rejected the idea of `promise.cancel()` (in part because of ideological reasons about giving promise consumers the power to affect other promise consumers, in part because of a problem[2] Domenic raised early about the timing of cancellation, and in part because C# uses cancel tokens[3]).

In practice, this would mean that intermediate async functions would need to thread through cancel tokens, which is something that bothered me a lot.

For example, it would have this affect on Ember, if we wanted to adopt cancel tokens:

        // routes/person.js

        export default class extends Route {
          async model(id, token) {
            return fetch(`/person/id`, { token });
          }
        }

In other words, any async hook (or callback) would need to manually thread tokens through. In Ember, we'd like to be able to cancel async tasks that were initiated for a previous screen or for a part of the screen that the user has navigated away from.

In this case, if the user forgot to take the cancel token (which would likely happen all the time in practice), we would simply have no way to cancel the ongoing async.

We noticed this problem when designing ember-concurrency[4] (by the venerable Alex Matchneer), and chose to use generators instead, which are more flexible than async functions, and can be cancelled from the outside.

At last week's Ember Face to Face, we discussed this problem, and decided that the ergonomic problems with using cancel tokens in hooks were sufficiently bad that we are unlikely to use async functions for Ember hooks if cancellation requires manually propagating cancel tokens. Instead, we'd do this:

        // routes/person.js

        export default class extends Route {
          *model(id) {
            return fetch(`/person/id`);
          }
        }

The `*` is a little more cryptic, but it's actually shorter than `async`, and doesn't require people to thread cancel token through APIs.

Also notable: because JavaScript doesn't have overloading (unlike C#), it is difficult to establish a convention for where to put the cancel token ("last parameter", vs. "the name `token` in the last parameter as an options bag" vs. "first parameter"). Because cancellation needs to be retrofitted onto a number of existing promise-producing APIs, no one solution works. This makes creating general purpose libraries that work with "promise-producing functions that can be cancelled" almost impossible.

The last bit (since I started talking about Ember) is my personal opinion on cancel tokens. On the flip side, a number of people on the committee have a very strongly held belief that cancel tokens are the only way to avoid leaking powerful capabilities to promise consumers.

A third option, making a new Task subclass of Promise that would have added cancellation capabilities, was rejected early on the grounds that it would bifurcate the ecosystem and just mean that everyone had to use Task instead of Promise. I personally think we rejected that option too early. It may be the case that Task is the right general-purpose answer, but people with concerns about leaking capabilities to multiple consumers should cast their Tasks to Promises before passing them around.

As I said, I think this may be a (very, very) rare case where a positive-sum outcome is impossible, and where we need, as a committee, to discuss what options are available that would minimize the costs of making a particular decision. Unfortunately, we're not there yet.

Domenic has done a great job herding the perspective cats here, and I found his presentations on this topic always enlightening. I hope the committee can be honest enough about the competing goals in the problem of cancellation so that Domenic will feel comfortable participating again on this topic.

[1]: [https://thefeedbackloop.xyz/tc39-a-process-sketch- stages-0-a...](https://thefeedbackloop.xyz/tc39-a-process-sketch- stages-0-and-1/)

[2]: [https://github.com/tc39/proposal-cancelable- promises/issues/...](https://github.com/tc39/proposal-cancelable- promises/issues/8)

[3]: [https://msdn.microsoft.com/en- us/library/dd997289(v=vs.110)....](https://msdn.microsoft.com/en- us/library/dd997289\(v=vs.110\).aspx)

[4]: [http://ember-concurrency.com/#/docs](http://ember- concurrency.com/#/docs)

<comment><USER13> Thank you! This is helpful. Do you believe there is no positive sum because Promises are out there already, and this could have been avoided had they been released with cancellation in the first place?

<comment><USER12> I think it's very likely that we could avoid turning this into a zero-sum debate with one total-winner and one total-loser.

That said, I think there's no positive sum because some folks believe that (1) Promises should be the primary async story in JS, and (2) Promises must not allow communication between two parties who hold a reference to the Promise. This means that `async function`s must return a Promise, and the Promise but not have a `cancel()` method on it (because it would allow communication between two parties holding references to the Promise).

Others (I'll speak for myself here) believe that the return value of `async function` should be competitive (ergonomically) with generators used as tasks (I showed examples in the parent comment). Since generators-as-tasks can be cancelled (via `.return()` and `.throw()`), the desire to make `async function x` as ergonomic as `function* x` conflicts with the goal of disallowing the return value of async functions from being cancellable.

In Ember's case, since generators _already exist_ , it's hard for us to justify asking application developers to participate in an error-prone (and verbose) protocol that we could avoid by using generators-as-tasks instead. And that is likely the conclusion that we will ship (and the conclusion that ember-concurrency has already shipped).

For _me_ , the bottom line is that we have very little budget to introduce new restrictions on `async functions`, because people can always choose to reject async functions and use generators instead (with more capabilities and _less_ typing!). I think the cancellation token proposal is well over-budget from that perspective.

</comment></comment></comment><comment><USER14> After something like that I would leave the company, probably. If something you care so deeply encounters a very strong internal opposition, probably there is an unaligned design idea and is better to provide efforts where those are better accepted, because otherwise the same story is very likely to repeat. And you know... life is too short.

<comment><USER15> I don't think this situation would be worth quitting one's job over. So you didn't get your way after arguing with your peers over it, it happens. As you say, life is short.

<comment><USER8> Depends. You may end up being "that guy with the stupid idea" for the rest of your time there.

<comment><USER16> Only if that's the only idea you ever have.

</comment></comment></comment></comment><comment><USER17> Discussion on Twitter: [https://twitter.com/andrestaltz/status/809521268332593152](https://twitter.com/andrestaltz/status/809521268332593152)

</comment><comment><USER18> Still, the debate doesn't happen publicly. I don't know why and who opposes it. Google has no position in it. But someone undisclosed with sufficient power at Google opposes it. And does'nt share his point of view with the community...Sad day for open source.

<comment><USER19> It's typically written up in meeting notes and someone publishes them if it happens during a meeting. If it happens outside of a meeting it likely happened in GitHub or the ECMAScript mailing list.

The person(s) opposing have likely already shared their view point with the community at different stages. Proposals are not simply created and championed with zero feedback from the ECMAScript folks util they're proposed at a meeting.

</comment></comment><comment><USER20> Serious question - why is cancelling a promise a reasonable use case? Doesn't cancelling potentially invite non-deterministic state into your program? If not, what would be the difference from throwing?

<comment><USER21> I have been waiting for cancellable promises for a while primarily for cancelling long lasting fetch requests which is a very common thing to need.

(Not really sure how to parse non determinism and throwing being related to cancelling promises)

<comment><USER22> What's a good existing way to deal with this use-case? Is there a useful library that wraps setTimeout / other logic to determine the quality of a user's internet connection in case of very poor connectivity (2G etc) ?

<comment><USER23> The way to handle this case is to use Promise.race with 2 promises. The first promise is your logic. The second promise is rejected after a timeout. For more detail read the section "never calling the callback" from "you don't know js" book on "async" in chapter 3 [https://github.com/getify/You-Dont-Know- JS/blob/master/async...](https://github.com/getify/You-Dont-Know- JS/blob/master/async%20%26%20performance/ch3.md)

<comment><USER24> But that doesn't actually cancel the request, and thusly the data is downloaded anyway? Or am I missing something?

</comment></comment></comment></comment></comment><comment><USER25> I'm not really familiar with the backstory here but it sounds like domenic was being seriously pressured/coerced to drop the proposal. What happened?

<comment><USER26> It sounds to me like most of the other people were disagreeing with him.

<comment><USER27> Can't tell if "most" or "small group - but enough" people.

<comment><USER25> "vocal minority"

</comment></comment></comment></comment><comment><USER28> Funny thing is, they didn't stop it because it was Bad, but because some ppl at Google didn't want it.

(probably because it was Bad, but it's sad to See that one company has so mich power)

<comment><USER29> Based on the comments in the linked thread, its sounds as if all participating companies have that same veto power. The justification seems to favor filtering false positives over false negatives in a sense. I suppose I can agree with that.

<comment><USER28> Yes.

Getting crap into the language is worse than not getting good stuff in.

But did they really veto here?

As I read a few days ago, the guy doing the proposal just was forbidden by Google to work on it anymore.

I wasn't in favor of this proposal think it's one of the better outcomes, but the form how if came to be dropped was a bit strange.

</comment></comment></comment><comment><USER30> Cancellation can be implemented with another promise passed into cancelable function as an argument. This way it is easier to see that asynchronous function is cancellable. And Promise implementation would become simpler.

</comment><comment><USER31> was it an actual mid-computation cancellation with collaboration from the VM?

I have done some heavy computations in JS, and it's a nightmare: your workers can be killed (I guess it's the browser saving resources) without any even escaping them, and webGL is always blocking the main thread (I had to chunk my computation myself).

<comment><USER32> No it's for I/O ops. Think cancelling a fetch() like you can do with XHR.

<comment><USER31> ah! that seem like the easy stuff.

<comment><USER33> But fetch() returns a promise, rather than a handler you can use to cancel the request. So some people wanted to add "cancel" as a third potential state of a promise.

Which smells a bit like a hack to me. Why stop at cancel? The Fetch API shouldnt return a promise, maybe?

But im assuming a lot of people gave it a lot of though. Maybe it is common enough. Maybe it is horrible to implement in a performant way.

But so far the new ES features ive seen should have been critisized more not less. Look at the ugly mistakes that did make it:

        f => { pizza }

Is the block on the right a statement block or an object literal? Its a statement block so if your lambda function returns an object literal than you need to wrap it in a statement block with a return statement. If it is anything else, than you dont.

Thats the horrible crap that actually gets through the proccess. Imagine how naive and broken the propositions must be that get killed?

<comment><USER34> > if your lambda function returns an object literal than you need to wrap it > in a statement block with a return statement

Or you can just parenthesise the object literal:

        >>> (x => ({ x }))(23)
        Object { x=23 }

The grammatical ambiguity is unfortunate, sure, but the simplest work-around isn't so bad.

<comment><USER33> If one forgets the (parentheses) you may or may not immediate or later can an error _somewhere_.

It isn't about the workaround -- it's about all the subtle bugs it will introduce in the edge-cases, for example:

         f => () => {}
         f(); // undefined instead of empty object

</comment></comment></comment></comment></comment></comment><comment><USER35> I suppose this is related?

[https://github.com/tc39/proposal- observable/pull/97](https://github.com/tc39/proposal-observable/pull/97)

</comment><comment><USER36> I'm trying to understand why Google people don't want cancellable promises?

Did I miss an explanation somewhere?

<comment><USER37> They probably want some form of cancellable promises, but think that the semantics and syntax in this proposal were bad. I agree with that.

</comment></comment><comment><USER38> Cases like these show how needed transparency is (see Mozilla). Hopefully this will cause Google to open up some more (although doubt it).

<comment><USER39> They are being transparent, there is a scheduled meeting of everyone involved in january.

And using this comment to rant a bit, I hate the idea that just because information isn't being announced immediately after someone finds out about something means that you aren't being "transparent".

In this case, this was most likely discussed internally, and come jan they will present the results on why it was canceled giving insight into the why and perhaps it's replacement or their ideas moving forward.

Now if come january it's just said "it's canceled" and nothing more, then i'll be right there with you calling for transparency and more discussion on the reasons, but you need to give the people involved a chance to actually have that discussion.

<comment><USER40> I have a different view on 'transparency': something is 'transparent' if you can see the internals of that thing at any given moment. Time is a critical factor for transparency: What if, instead of the next meeting being in a month (where we hope this will be discussed), it was in a year? 2 years? 10?

People have finite attention spans. There's probably a well-intentioned, innocuous explanation as to why the process has been set up like this: I imagine the time delay is intended to give people time to consider the issue (reducing the chances of irrational emotional outbursts, increasing the chances of rational discussion).

However, introducing a delay between 'decision' and 'revelation' of the internal machinations behind the decision creates greater scope for people to act in bad faith. This seems at odds with what (I think) is the function of transparency.

Whether this is an acceptable trade-off is a separate issue.

</comment></comment></comment><comment><USER41> I use Promises extensively, including cancellations (via the bluebird library) and find the following to be strong reasons not to ever use them, if they are to be implemented in a similar way that Bluebird uses them:

1) forward propagation side effects: canceling a promise doesn't mean rejecting. it means that further .then() or catch clauses are not invoked. This breaks (imo) a fundamental tenant of promises.

2) backwards propagation side effects: if you are waiting on a promise and cancel it, this is causing the previous promises in the chain to suddenly stop processing, again without any rejection, it just stops.

3) simple workaround: I don't think it is appropriate to backwards propagate promise cancellation, but it is very easy to emulate cancellation for downstream users (those using your promise). simply attach a "pleaseAbort=false" property to your promise and if a downstream caller wishes to cancel, they set .pleaseAbort=true and you can stop your processing and return a rejected promise.

</comment><comment><USER42> It would've certainly helped to avoid this: [https://facebook.github.io/react/blog/2015/12/16/ismounted-a...](https://facebook.github.io/react/blog/2015/12/16/ismounted- antipattern.html)

</comment><comment><USER43> Can someone give a good use case for these that can't be easily solved with existing tools? I'm really struggling to find a good example. I seem to have this problem for a lot of new stuff introduced into Javascript...

<comment><USER44> Unlike an XMLHttpRequest which can be aborted, the new fetch() API does not provide a way for you to abort the request. This is because there is no standard way to cancel a Promise which is what fetch() returns.

<comment><USER45> So.... we introduced Promises so that we could introduce fetch() that returns a Promise, only to discover that it meant we couldn't get all the other useful behavior of XMLHttpRequest. So while a proposal to add cancelable Promises would fix the inability to abort, we'd still need yet more additions to completely get back to functionality we had previously.

<comment><USER44> That wasn't the reason promises were introduced. An XMLHttpRequest can be synchronous which is Bad™ and that is something explicitly not allowed by the Promise/A+ spec which means it will never be something that fetch() could do. The advantage of promises is that they can be `await`ed in the context of an `async` function which takes a lot of the cognitive load off of the developer.

<comment><USER39> Furthermore the `await` syntax is one of the reasons why cancelable promises is contentious.

There's no easy way to "cancel" an awaited promise without basically resorting to the .then() syntax.

</comment></comment></comment></comment></comment><comment><USER46> Sounds like MIT vs Worse is Better

</comment><comment> semi-extrinsic For anyone else left clueless by title: a proposed new feature for JavaScript, as in ECMA TC39, was "cancellable promises", trying to handle "cancellation" of async actions ("promises") by extending normal try-catch structures with a "canceled" case. Due to unspecified internal Google drama, this (presumably popular) proposal has been withdrawn.

Here are some slides with technical details of the proposal:

[https://docs.google.com/presentation/d/1V4vmC54gJkwAss1nfEt9...](https://docs.google.com/presentation/d/1V4vmC54gJkwAss1nfEt9ywc- QOVOfleRxD5qtpMpc8U/mobilepresent?slide=id.gc6f9e470d_0_0)

<comment><USER47> So, I'm not saying they were wrong or right, but this is interesting to see what happens when the "consensus" is a major corporation.

I'll make a prediction now. We'll be seeing things like this happening in the Microsoft code base in a few years. I'm a huge fan of Microsoft and their open source effort, but I'm not above believing that corporate interests win in the end.

EDIT: Thanks for the downvotes, care to explain where I'm wrong? I'm sharing something called an opinion.

<comment><USER48> > _when the "consensus" is a major corporation_

What do you mean by that? If consensus is required any member can veto a proposal, not just those belonging to the major corporations?

<comment><USER47> I probably should clarify. I mean when consensus is a group that is making decisions with a potential financial impact to their employer.

Google cancelled a proposal because reasons, which will be found out in January apparently.</comment></comment></comment></comment>


Google Offers - Groupon Clone - <AUTHOR> http://venturebeat.com/2011/01/20/google-offers-groupon/

<comment><USER2> Google offers will be a significant competitor to Groupon. They might suck at social, but couple Google offers with Checkout and the adwords network where they can use their own advertising inventory for free to promote this as they have been doing for Chrome and the picture starts to look promising.

The biggest success factor in these group buying services is having a massive audience, and what company is better suited to roll this out than Google?

</comment><comment><AUTHOR> Call me confused but i am surprised why Google tried buying Groupon if they were coming out with a clone... surely they didnt just develop the clone in the last 2 weeks!

</comment><comment><USER3> I predict a horrible UI and for it to languish around for a while then be killed off.</comment>


Ask PG: If comments can't be replied to, please don't allow downvotes - <AUTHOR>

On this submission: http://news.ycombinator.com/item?id=2652991
It was submitted with a typo.  I commented on that, and observed that the submitted obviously didn't use the bookmarklet.  He thanked me for the reference, and seemed pleased that I'd added to his understanding/knowledge.
Then he deleted the item (instead of editing the title - no idea why) and also deleted his response.  That's left my comment in isolation and without context.
Of course, since the submission has been deleted, replies are no longer possible, so now that someone has done a drive-by downvote I have no way to explain it.  That seems unfair/unjust/sub-optimal.
Just thought I'd let people know.  HN has bigger problems than this, but it just adds to the general feeling of - I'm not sure why I bother any more.
ADDED IN EDIT: And now it's been down-voted further - it's almost as if people want to punish you for trying to be helpful. <comment><AUTHOR> Clickable: <http://news.ycombinator.com/item?id=2652991>

</comment><comment><USER2> Feature Requests: <http://news.ycombinator.com/item?id=363></comment>


Google adds voice input to homepage search - <AUTHOR> http://news.cnet.com/8301-1023_3-20071174-93/google-voice-search-offers-natural-user-input/

<comment><AUTHOR> I intentionally made the submission title different than the article title to be very distinct about what has been done. The original title "Google Voice Search offers natural user input" is not specific to the content of the article.

While the original article is 6 days old, I just noticed the voice input option being live on the google homepage now.</comment>