skysight-inc/HackerNews huggingface dataset:
> There's no excuse, but they don't fix it.

Browsers exist for my convenience, not yours.
Finally, this is what GitHub should have in the first place. Thank you!
Gender relations are interesting that way. I wonder what evolutionary psychology theory explains this particular kind of behavior.
Learn by watching short videos, solving practice problems and working on real world projects. All in the context of a game!
audio of the talk: http://cr.yp.to/talks/2015.04.16/audio.ogg
How education app Yuantiku found success with China's young test-taking 'robots'
I'm not getting any useful info out of that press release. It sounds like a work distribution system to improve scaling, but what has this to do with fetch quests? The 'boring' quests in MMOs are not designed that way because of technical restrictions, but game design restrictions to keep the game world under control despite thousands of players exploiting the game mechanics (that's the actual 'game play' in MMOs, trying to 'gamble the game rules'.

Simple linear quest lines, unlimited resources, limiting interaction between players (trading, etc...) help to keep the game world balanced for all players, and most importantly, enable the game to provide an interesting 'hero-story' to each player instead of just being a simple 'pawn'.

Older MMOs like Ultima Online provided much more freedom (and power) to players then current MMOs which are much more 'dumbed down'. I think the current state of MMO monoculture can be traced back to WoW's success. WoW was simple, linear, accessible, and extremely successful. Obviously this is what players wanted instead of the complicated and unforgiving Ultima Online, and everyone wanted to create a WoW killer.

May be the wheel of reincarnation is now turning again, there seems to be a small revival of 'sandbox MMOs' which are less about individual story and more about player interactions.
alias fuck='sudo $(history -p \!\!)'
Very nice article. Lots of interesting points.

But toward the end, the author writes as if addressing a very specific group of people, and I can't figure out what this group is supposed to be.

FTA:

> And that’s the bastardly crux of it all: two groups who nominally want the same thing — a culture of acceptance — separated by the values that lead them to that desire and the fear that ultimately nothing will really change.

One group is the hackers. And the other is?

And then the last paragraph:

> All we’re asking for is constructive proof that you accept us for who we are, rather than the fact that we build your toys or that we tripped and fell into a pot of money. The dominant culture has had two decades to demonstrate to us in copious detail what it’s willing to offer — the good parts and the bad ones — and now it’s your turn. Please show your work.

Who is the "you" here? Not the dominant culture, evidently.
Having a minority opinion is often perceived as "provocative" by people who feel threatened by that opinion, no matter how well articulated. These days the feeling of being "threatened" is at an all time high. (I say this having participated in discussions online for 30 years.)

The assumption that "trolls" are trying to "incite reactions, as opposed to contributing to conversations" is often repeated, but in practice, "troll" is a term that is often used against people whose viewpoint is minority, but who are legitimately arguing it.

Those with the majority viewpoint often find it convenient to dismiss (and attempt to discredit) those they disagree with by simply calling them troll. And it's not uncommon for forums to be operated in such a way as to actually ban people with minority viewpoints.
The one case I can make for implicit conversions (implicit parameters are brilliant and useful and not normally what people complain about) is the spray-routing DSL, e.g. https://github.com/spray/spray/blob/master/examples/spray-ro... . What would be a separate config file in any other framework is instead ordinary Scala code following the rules of ordinary Scala, which is wonderful - you can factor out and reuse common parts of your routing really easily, because it's all just code.
Bitcoin Mining Text game
Yeah, lets compare a pair of tech companies which have been around for less than a decade with a car manufacturer and a bank, both of which have software in use today that was created decades ago and operate in heavily regulated environments.

Apple, meet Orange: Surprise! They taste different.
My point is that even with the ".format()", if you use named arguments then .format() is shorter than '%' if you have two or more terms:

"%(name1)s %(name2)s"%{"name1":"ABC","name2":"DEF"}
"{name1} {name2}.format(name1="ABC",name2="DEF")

To get what you want, you need to convince your co-worker to 1) switch to positional arguments, and 2) switch to '%' instead of .format.

Even if Python never gained the .format() option, so #2 weren't an issue, you would still be stuck with #1, because '%' supported them as well.

As for logging, I pointed out two possible ways to address the problem. Personally, I don't log in performance critical loop since Python's function call overhead is so high. Testing now, you can see that 3/4ths of the overhead for logging a simple format statement is just in calling the logger:

% python3.3 -mtimeit -s 'import logging' 'logging.info'
10000000 loops, best of 3: 0.0525 usec per loop
% python3.3 -mtimeit -s 'import logging' 'logging.info("abc")'
1000000 loops, best of 3: 1.59 usec per loop
% python3.3 -mtimeit -s 'import logging' 'logging.info("abc %d %d %d", 1, 2, 3)'
1000000 loops, best of 3: 1.71 usec per loop
% python3.3 -mtimeit -s 'import logging' 'logging.info("abc %d %d %d"%(1, 2, 3))'
1000000 loops, best of 3: 1.64 usec per loop
% python3.3 -mtimeit -s 'import logging' 'logging.info("abc %d %d %d".format(1, 2, 3))'
1000000 loops, best of 3: 1.99 usec per loop

According to this, calling info() with more than one argument is actually slower than calling '%' every time(!).

Is your objection based on a measured performance impact (eg, more complicated formats will be worse) or a theoretical evaluation?
Interesting, that was exactly my reason for preferring Scala. With Clojure I could see it would take me weeks to get productive. With Scala I could write Java-without-semicolons and be slightly more productive on day 1, hour 1 even, and then gradually pick up the more advanced features.
I get your point, but I think the problem is with in-group behaviour. You are comfortable with swearing if you're very comfortable with the group dynamic.

But there are plenty of out-groups in technology along plenty of lines, who may privately be uncomfortable in this situation; and gender is only one of those lines.

If we pretend there is no problem with gender that needs addressing in this respect, it's not that we are excluding women: it's that we are excluding every aspect of diversity in technology.
"There's probably plenty of reasons why no European PhD dropouts started a successful search company, but cross border e-commerce isn't one of them."

For digital goods and services, cumbersome VAT rules do make cross-border e-commerce more difficult. The recent new rules on digital goods where VAT is applied based on the location of the buyer means merchants now have to deal with different VAT rates for 28 EU nations. I can see the rationale for such an approach, and it is meant be fairer...but in practice it's cumbersome and bureaucratic. Users now have to supply their address details for simply downloading software (in order for the merchant to confirm their location). There is no benefit to the user other than having to give more of their personal info away to merchants. Plus, now merchants have to retain all that personal data for many years for accounting and auditing purposes.

Harmonising VAT on physical goods will probably never happen, but the EU could have proposed a single VAT rate for digital goods and services which might actually have gained traction. Did they ever pursue this? If not, why not?

The people from the European Commission who are helping shape the "Digital Single Market" don't always inspire confidence even if they have the best of intentions: https://ec.europa.eu/commission/2014-2019/ansip/blog/euvat_e...
Social contracts, religions, wisdom traditions of all kinds have been founded on the insight that "hitting back a bully if you can" is not a good behavior in the long term.

The Buddhist text Dhammapada puts it like this, in Gil Fronsdal's translation:

Hatred never ends through hatred.
By non-hate alone does it end.
This is an ancient truth.

(Of course this is not evidence; you didn't provide any, either.)
Good idea, but I think kids (I am thinking specifically in kids with ADHD) could be a better market for this: A more dynamic, visual, and challenging learning environment.

In this context, I have missed "learn by doing" missions. For example, given a queue diagram, "implement" a "pop" operation by clicking and dragging the elements in the diagram. Check [1] for an approximation of this idea.

I just cannot see the "game context" concept. Calling lessons "missions" is not enough, but maybe I am missing something here.

You really need to polish the user interface.

Anyway, great work a lots of potential. Congrats.

[1] http://visualgo.net/
Because never trust user input and race conditions.

The author says "Server-side, this is a much harder problem to solve." and he is correct. But that doesn't mean that if the browsers did solve this problem that you wouldn't still need to solve it server side. For the same reason you still need to implement server side validation even though you have client side validation (never trust user input).

Say you had an order form only allowing one order per customer (some special offer) and on the server you have a check to ensure order.count==1 you might assume that because the browser prevents double clicks on the form you are now safe.
Except you aren't. It's pretty trivial to still send that form submission multiple times simultaneously (curl, ab) and trigger a race condition where each order.count check returns 0.
How so? Not helping competition is very different from actively working against them.
2. There are places where this is true, but a lot of people seem to get hung up on the syntactic differences between e.g. "a.foo(b)" and "a foo b", which really are superficial and you learn to read past very quickly.

3. Some of these are backwards compatibility. You can get a more helpful typesystem by setting a few flags: https://tpolecat.github.io/2014/04/11/scalac-flags.html
Just set her desktop to single click mode?
I've been using it for five years and I don't think it's too complicated. (There are plenty of places where I think complication is a necessary evil for the sake of Java compatibility)
I was using that Google 3D plot viewer thing the other day and assumed right-click-dragging would do something for me. It didn't, and it occurred to me that the reason we have this is that Microsoft, Apple, or some other microcomputer vendor once decided people were too dumb to know they have more than one finger.

And now on the subject of double-clicking, it occurs to me that if the one-finger thing hadn't been the way, everything that was ever a double-click action could've just been a single click on the next button over. Which would be simpler.
You are looking for setImmediate[1].

EDIT: Oh, never knew that this method was a Node-ism only.

[1] https://developer.mozilla.org/en-US/docs/Web/API/Window/setI...
Show HN: Grafer – graphs of your life with statistics (iOS app)
While I agree that you should include a one-time token with all sensitive forms, I don't think that disabling links/submit buttons on the first click is a bad idea in general. It's an easy fix that will immediately prevent most accidental redundant server requests, but as it's a client-side fix it's inherently unreliable.

What's wrong though is the author's solution of disabling _all_ links and submit buttons on the page indefinitely. Here's an alternative solution that only disables whatever has been clicked on for half a second:

(function() {
function stopClickEvent (ev) {
ev.preventDefault();
ev.stopPropagation();
}
document.body.addEventListener('click', function (ev) {
if (ev.target.tagName === 'A' || ev.target.getAttribute('type').toLowerCase() === 'submit') {
setTimeout(function () {
// Needs to happen _after_ the request goes through, hence the timeout
ev.target.addEventListener('click', stopClickEvent);
}, 0);
setTimeout(function () {
ev.target.removeEventListener('click', stopClickEvent);
}, 500);
}
});
})();

Unlike the author's solution, this really works for links (they don't support the `disabled` attribute), it doesn't change the appearance of the button, it only disables one element, and it will work for elements that have been added to the document after the DOM was loaded. You can try it here: http://codepen.io/anon/pen/xGKdLX
>The idea that you have to be multiparadigm to function in real world settings is a fallacy. Haskell is simply more expressive, which equips it to solve just about any problem with more clean and concise code than you're likely to get in other languages. Even if the code size stayed the same the extra safety you get from purity and strong types would be worth it alone.

Haskell is also not used any major project. It's an academia language.
Appreneurs Get a New Show Called App Store Launch Stories Podcast
Still, you are supplying the record fields to match on as T.Text. Check out [1] for a type-safer approach. I've been working on a typed expression builder for just this purpose, but due to lack of time haven't been able to finish it yet [2].

[1] http://hackage.haskell.org/package/structured-mongoDB-0.3
[2] https://github.com/pkamenarsky/typesafe-query
This gets seriously annoying if you have an intermittent connection. I know the first click didn't succeed, so I have the choice of refreshing and losing all my typed content or manually using the web inspector to re-enable the button. It's shitty user experience.
> Firefox seems to remove the second click sometimes. If I click a link, and then, while the page is loading but the old page is still visible change my mind and click another link, it sometimes ignores the second click. However it doesn't seem to happen all the time.

To have better response time (and be a good citizen and save bandwidth), if you try to load in quick succession two different pages the first request is aborted. If you're too late the content of the first request has already been downloaded and being processed, resulting in that page being loaded.
NEB (No Expert But...) Isn't Linux just the kernel?

On the page they think comparable systems to Circuit are CoreOS, and Consul and Mesosphere.

What I'm trying to say is this: are not all of these "linux installed" with some additional stuff thus making them an operative system (distro is it??
How do you claim Gamergate is simply "well-known" as "anti-corruption"? Its Wikipedia page[1] and related discussion and sources disagree with your sentiment, attributing this line of thinking to "some of the [Gamergate] people".

If you want to distance yourself from the documented invasion into the lives and the distinct harassment of women in the industry, my humble suggestion is to pick a new angle from which to fight. How about Doritogate?

I fear we have gotten quite off-topic.

[1] http://en.wikipedia.org/wiki/Gamergate_controversy
Or Macs... the "single click to select, double-click to apply default action" occurs both in Windows and MacOS.
Signing is slow, if anything signing the CSRF tokens just became your bottleneck, if not you just inflated the request size by kilobytes for no good reason.
Microsoft, Once an Antitrust Target, Is Now Google’s Regulatory Scold
I'm a GNU/Linux user for almost a decade now, sysadmin, programmer. I still double click things everytime I'm using a Windows desktop (not on the web of course), as does everyone I know here in Brazil.
Actually the whole point of particle physics is that the same thing _doesn't_ happen every time. Quantum field theory allows us to predict probabilities e.g. of a particle decaying to another particle, for a given model. As for doing something 1e4, 1e5 times, at the LHC we collided bunches of 10e10 particles continuously every 50ns for months, and still only produced a few hundred Higgs particles. So these studies of ultra rare processes tend to also have limited statistical power.
Pretty much. The CPU-intensive part was computational geometry. It certainly did not help that we were four programmers, and none of us had a strong background in math. I suggested once hiring a math-kahuna just to optimize the geometry-stuff, but money was rather tight. Also, the other programmers were very conservative. Once, an intern rewrote the geometry stuff using DirectX, so stuff like overlap detection for polygons could be offloaded to the graphics hardware, but my boss refused to adopt this into our code.

Also, we used a version of OpenWatcom that was rather old-ish even back then ("back then" being ~2007-2009), which knew nothing of SSE or stuff like that. Multi-core CPUs were around, but few if any of our customers used them, so multi threading was not really an option, either.

UPDATE: As a side note, I once tried recoding a few very simple but heavily-used utility functions in assembly. That was pretty much my only contact with raw assembly. When I compared my versions to what the compiler made of the C-version, they looked nearly identical. I never knew whether to be proud or ashamed of that. Then again, the assembly version was glaringly obvious... (For comparison, I also compiled those C functions with gcc, and the output looked nearly identical to my version.)
In a sense, companies that offer developers a salary plus equity or stock options are doing something similar. You get a certain amount up front, which is not contingent on the company's success (i.e., you get to keep your paycheck even if the business eventually goes belly-up), plus the possibility of more if the company does very well.

Other industries do this, too. When I was offered a book deal, I was given an advance, which was not contingent on sales. But, if I my book sells past a certain threshold, I'll start earning more royalties. (So please, buy a couple dozen copies.)

In fact, any business that offers a base salary plus some sort of additional compensation if certain targets are met (e.g. bonuses) are following this sort of model.

Edit: Now that I think about it, all the photogs are doing by charging based on circulation is a version of per-user licensing. Only unlike in software, the "users" are the people who see the advertisement.
A lot of Scalaz and Shapeless duplicates things that were implemented less well in the standard library. E.g. standard-library tuples can't be abstracted over (supposedly will be addressed in Don Giovanni but that's at least 3 years away). Standard-library futures aren't completely controlled (and overuse implicits) so there is scalaz-concurrent Future which is almost but not quite the same. The macro implementation is clunky and really needs a couple of minor changes that are going to be in the next release but aren't at the moment, quite possibly because it was implemented by an academic whose time didn't quite sync up with the scala language release cycle.
Searching for 2 F*** Great Developers – San Diego
A few years ago I moved from the U.S. to Japan. How does Twitter identify which users go to which location?
Apparently this article has been removed after it was published. (And quite sloppy too, because Firefox is detecting a infinite redirect loop after you click the link)
Yes, in quantum physics you have a set of possibilities and their probabilities, and with more experiments you'll produce more Higgs particles, for example
It's important that independent developers know that (by default) they retain the copyright to their code and to anything produced from their code.

Unless agreed otherwise, a company contracting you does not have the right to build off your code without your permission - they have an implicit license to use your code for the reasons they expressed to you, and no more.

This is an important part of contract negotiation.

If a company wants the right to use what I built for them, they pay one price. I find it helpful to make it explicitly clear exactly what we are agreeing.

If they want the right to my code, there are several disadvantages for me: I could lose potential future work from them, and I lose some competitive advantage gained from my past work and skill that's gone into that, and I might lose the right to reuse my own code.

They will normally pay a much higher price to cover that disadvantage, depending on how thoughtfully this is negotiated and the nature of the work.

This is different from employed developers, who give up their copyright to the employer (again, by default).

In my experience, freelancers in creative fields tend to be very aware of this situation and apply it skilfully.

If Nike started using the swoosh in a way which they hadn't agreed upfront, the designer has a definite copyright claim there, and both parties ought to have known this when she first agreed to do the work. Indeed, the article reads like they later paid her off with shares.

This is my understanding from the UK; I am not a lawyer.
Many photographers also insist that you buy prints from them directly at a huge markup, which would be like insisting you are the only one able to resell hosting to your web clients. We don't need to copy their unethical behaviour.
Scala has implicit conversions but the IDEs highlight when they're happening, so they're not completely invisible.

To my mind Scala is a very unmagic language; very complex libraries are written for it, but they're never magic, they're always ordinary Scala code and ordinary Scala features, just combined in clever ways. E.g. typeclasses are a language feature in Haskell, but in Scala they're just a pattern that you implement using implicit parameters. Actors and messages are a language feature in Erlang, but in Scala they're just a library with methods that you call. Type-level functions are a language feature in e.g. Idris, but in Scala (e.g. Shapeless) they're just a technique making use of implicit resolution.
"Are double click actions still a thing?" Yes, and he knows it. He's feigning ignorance because we all know the Mac and Windows desktops both require double clicking by default.
I read a couple of the Fortress specs as they were developing it, and quite liked the language. It was complicated, but (to me) the complexity was warranted. What about the language do you consider a mess? Or is it more that you believe that any language with similar goals would inevitably be a mess?
Michael Meeks has a good example of how this is supposed to work in LibreOffice:

https://people.gnome.org/~michael/data/2011-10-13-new-develo... (5 page presentation)

Compare pages 3 and 4.
Nice one! Good thing I wasn't drinking tea when I read this, I would have ruined my keyboard. ;-)
I was very excited when I read the headline. I thought someone wrote an OS kernel in Go. Which is something I would like to see.
looks macintoshy
Regarding Oauth2 for fresh and new projects, someone suggested oauthlib as a replacement yesterday. [1]

[1] https://news.ycombinator.com/item?id=9392242
Agreed, this should be solved server-side.

Indeed it is possible to implement idempotent behavior of POST forms server-side. Even if a bit tedious to implement at first, it meshes very well with multi-user web apps, when several people may be changing the same underlying data simultaneously.

One possible approach is carry in POST both old (original) state and new (user input) state, and apply it as a diff to underlying storage.

Used this approach with 100% success on WWW based kiosks used by tradesmen, some of whom were habitual doubleclickers. Since the form was very simple -- one or two fields -- the old state was carried in action url. In case of double clicks, the seconds ended up changing nothing in backend storage, and returning correct data.
with google analytics embedded, and actual form removed. so, deliberate.