skysight-inc/HackerNews huggingface dataset:
Clojure/ClojureScript now has core.async, which is a Go-style implementation of CSP with coroutines and channels.

Like C#, core.async uses a lexical compiler transform to produce a finite state machine for the co-routine. Unlike C#, Clojure can achieve this with a user-level macro, instead of a compiler change. Both C# and core.async differ from Go, in that Go's coroutines have dynamic extend, by virtue of being heap-allocated stacks with a custom scheduler. In practice, this has a minor impact on higher-order usage of co-routines, but is a smaller problem than you'd think, it's generally advisable to minimize higher order usage of side effects.

Both C# and Go's approaches can be implemented as Monads, yes. However, Monads are a significantly more abstract thing than either CSP or C#-style Tasks. The do-notation is barely concealed continuation-passing style, which is generally less pleasant to work with than traditional imperative constructs for side effects such as send & receive. "More powerful" isn't a really useful measurement for practical use.
ES6 generators will be the solution for callback hell in node.js. Node 0.11 already has generators support hidden behind a flag (--harmony-generators) and eventually it will be enabled by default. Generators + libraries like this

https://github.com/jmar777/suspend

will make node.js code more readable.
Marsh probably does understand the implications here. What kind of "fail" were you thinking of? That it was pointless? I agree. That it's going to blow up? I less agree.
ok, sure, but it's still fixable without having to use await. you'd have to forego the for loop and make that flow control part of the callback cycle.

was your point that it couldn't be done with callbacks? or couldn't be done easily? or not easily alongside traditional flow control like for loops?

I agree, await and async in C# are very nice, I just took your post as a challenge.

get_player_name = (player, next) ->
ask "what's your name?", (response) ->
if is_valid_name response
player.name = response
next!
else get_player_name player, next

get_player_names = ([player,...players]) ->
get_player_name player, ->
if players.length > 0
get_player_names players

get_player_names players
I'd do that with the aforementioned `async` library, specifically `async.eachSeries`:

async.eachSeries players, ask, ->
# Well that was easy enough...
printRoster(players)
I have no bias in favor of free software. I do think open source is awesome. I do think open source UNIX-like systems are awesome. I do think open source programming languages are awesome. With all this said I use whatever software I like and can afford. I don't think open source software is inherently better, it is inherently more awesome but not necessarily better. My favorite desktop OSes are OpenBSD, OS X & Linux, I am only using Linux currently. My favorite GUIs are Cocoa & KDE.
Scala has both Futures and Promises which are inherently much nicer than that async call. That's what happens when you allow things to compose. Glad c# gets something.
Not to mention that the article just uses "craiglist" to mean "selling any goods or services locally." It's silly to consider all those startups as "competing within verticals of craiglist" simply because they are involved in selling goods or services locally.
No, it rewrites the method code into a state machine[1].

See Async/Await FAQ[2].

[1]: http://stackoverflow.com/a/4047607/458193
[2]: http://blogs.msdn.com/b/pfxteam/archive/2012/04/12/async-awa...
Can a comment be sexist and true at the same time?
So beautifully voices exactly what I've been thinking.
Area 51 officially acknowledged, mapped in newly released documents
const tail = ([, ...xs]) => xs;
I don't think that at all, I'm sorry a dumb NSA joke confused the issue. I think app writers should be calling SecureRandom (or platform equivalents) and expect secure results. Just like app writers should use TLS, despite its faults. My argument is that reading '/dev/urandom' is akin to opening a raw socket and hand-crafting packet headers because you don't trust TLS.
JS gives you the tools to cope..

function sequence(fns){
var fn = fns.pop();
while(fns.length) fn = fns.pop().bind(this, fn);
fn();
}

sequence([
function(k) { funcy(1, k) },
function(k) { funcy(2, k) },
function(k) { funcy(3, console.log) }
]);

function funcy(v, cb){
console.log(v);	cb(v);
}

// ==> 1 2 3 3
Anonymous Callbacks != Callbacks

Callbacks have been around forever in C using named functions, and are not specific to either the current generation of programming languages or programmers. One can still use a named function instead of a locally constructed lambda to represent a callback in a high level languages.

The primary difference is that when declaring named functions non-locally, one must explicitly share state through the parameter rather than implicitly sharing state through lexical scoping. It seems more accurate to label the problem of nesting lambdas to the point of ambiguity as "Lambda Abuse" or "Lexical Scoping Abuse" rather than "Callback Hell".
Exactly, this was my point.

It took me about as long as I typed this code to write it.

Of course it is doable with callbacks, but I know I'm not smart enough to do it in a comment field on HN.
I think this is Canonical's most aggressive and unstable plan yet. Mir is baby new, like version 0.0.9. They need to be doing a freeze soon for 13.10 and Mir is still dropping major major features like multimonitor support (soon) and has big performance regressions (some fixed soon). For something being launched to the public in two months, this seems insanely aggressive and unlikely to do well. I'm really disappointed
$100 are about $650 in todays money [1].

[1]: http://www.wolframalpha.com/input/?i=100%24+from+1969
This is what anti-trust laws are for.

Microsoft did stuff half as bad as this and had the Department of Justice regulating their business practices for more than a decade.
There are people who use it in the first world, but yes the killer app is in the developing world. Smart phone penetration in India for example is about 3%. Even in the U.S. it is about 45% I think from when I last checked.
It's not a made-up word. It was the name of the computers small enough to put in your room when Sun started.

What makes your point much more evident, they should have changed it when everybody stopped using the word.
I love how you've solved the "constant scrolling preventing me from clicking that damn link that keeps flying by" problem. Really well done.
Coroutines (or generators) are a really nice sugar for callbacks. This looks a lot like ES6's yield, just s/await/yield/.

But to answer your question, since these can't be done in parallel, you'd have to keep track of which player you're asking:

var playersAsked = 0;
var askNextPlayerHisName = function(done){
if (playersAsked === players.length) done();

Ask("What's your name?", function(name){
if (IsValidName(name)){
players[playersAsked].name = name;
playersAsked++;
}
askNextPlayerHisName(done);
});
};
askNextPlayerHisName(function(){/*...*/});
3-time is a charm - learning from our pivots and mistakes
So I’ve been listening to the demo in the background for a bit now. And I think it does convey info in a non-intrusive way, though I’d imagine it’ll take a long while to know exactly what’s going on just by listening.

It seems like the big trick when implementing an app on top of this is appropriately assigning the "level" of the event. Every time the Alarm or Horn goes off it’s fairly intrusive.

Regardless an awesome, uniqueº and useful service.

--

º In my experience.
Watching the github realtime activity with sound was mesmerising. I spent at least fifteen minutes listening to it.

You mentioned there will be Windows and OSX standalone clients coming soon. Will there be an API for writing clients?
Please add a title tag to the https://news.ycombinator.com/newslogin page. Password managers like KeePassX and KeePass use window titles to select user names and passwords for the auto-fill feature.
Such beautiful words. Love the last line: "To not to have entirely wasted one's life seems to be a worthy accomplishment, if only for myself."
The Government Now Admits There's an 'Area 51'
"I can assess quality of their code myself"

I'm curious, how many interviewers actually do this? My experience is most interviewers can't even be bothered to read my resume, let alone anything on github. I've been on the other side of the desk and am equally guilty of this. The best result I've had is when I bring printed code to the in person interview. Then they at least scan it while I'm sitting there, though I have no idea if they are actually reading it or if this is their idea of being polite.
iPhone: The Lineup of 5
I see your point, but they read a lot like come from when looking at code.

And platform is not orthogonal: sometimes I need to know exactly what is using how many cpu cycles, and callbacks make it hard.

Admittedly I mostly do embedded dev, but there's a reason why I have the only remote control / video app out there that still works on a HT G1 :)
Steve Jobs: One Last Thing (2011 PBS Documentary)
This post was on the home page then randomly dropped to the bottom of the second. Considering the amount of upvotes and the time it was posted this post should have still been on the home page.
ci := make(chan int)
go func(ci)
<-ci
I trust virtualization as a security boundary, particularly on modern CPUs with stuff like VT-d/VT-x, more than process separation on Unix/Windows. I still trust hardware separation a lot more, particularly because it is so much easier to audit and put multilayer controls on, particularly vs. administrative users.

Virtualbox in specific might be a vulnerability compared to other virtualization systems, though.
Kamcord (YC S12) - Fundraising Part 2 [video]
I feel like too many people get sucked into the idea of furthering their career, to the point that they forget to further their own life.

What is the point of existence if we never get around to experiencing it?

"It's not the things we do in life that we regret on our death bed, it is the things we do not." - Randy Pausch
Based on your allocator woes, it sounds like you might like bsl, with polymorphic allocators: https://github.com/bloomberg/bsl/wiki#the-bde-standard-libra...
> I was a Youtube user before Google was its buyer. So my choice to go with a windows phone shouldn't to be dealt with a degraded experience.

If you were a youtube user then, you were using the website - which is PERFECTLY USABLE on your windows phone. Your experience is not worse in any way than it was then (although it might not be as good as android or ios users; but then, you didn't buy an android or an iphone)

> Had MS or Apple pulled a similar crap, everyone would be crying an antitrust river and carrying a nail to the cross. Why does Google get a free pass at this?

Google is asking Microsoft to respect terms of service - nothing more, nothing less. Twitter does it every other week, and so does facebook - and people are upset, but everyone understands that this is entirely within their rights. (Unlike stuff Microsoft did, for which it was convicted of antitrust violations).

> Its by now clear that Google wants to provide a degraded experience to the windows phone users, thus deliberately rigging the market place.

The only thing that's clear is that Microsoft is using its customers as pawns in a PR game against google. I know what my response to that would have been: No more MS products.

> What guarantees that the same wouldn't be pulled when Firefox OS or Ubuntu OS comes to the market? If so what can possibly replace Youtube? 90% of the video links on the web are to Youtube.

AND THEY ALL WORK PERFECTLY WELL ON YOUR WINDOWS PHONE, INSIDE THE WEB BROWSER, LIKE LINKS ARE SUPPOSED TO! WHAT ARE YOU UPSET ABOUT?
Why do people insist on analysing things using analogies? Analogies are useful for explaining a concept that might not be obvious. Saying callbacks are like gotos, gotos are bad, therefore callbacks are bad is ridiculous.

And he gives some sample code where the 'problem' is nothing to do with callbacks, its just nested lambdas. In fact I find that code quite easy to read, and would be very interested in seeing the same functionality implemented some other way, bearing in mind it is quite a difficult problem to synchronize multiple async operations and usually requires horrible code using multiple mutex.
Eventually both Google and Microsoft give a damn about openness. They all care about their own profits. "Openness" is just a cute cover. Microsoft's own track record in such things has been very bad (hint: Samba, Wine).
I think that WaitGroups or possibly just reading from a semaphore channel might do the trick for you in go.
Yup, bit strange how a post about a YC founder has plummeted into obscurity so quickly. I'm sure there's a perfectly reasonable explanation.
On the contrary, there are still perfectly good uses for goto. The two I can name right off the top of my head are stack-like error unwinding in C (which comes with an endorsement from CERT recommending its use) and computed goto dispatch tables in threaded interpreters.

Still, you're right that structured control flow statements have obsoleted goto for all but the tiniest edge cases, and so too do I look forward to callbacks suffering a similar fate at the hands of things like await.
Using Docker to efficiently create multiple Tomcat instances
I like the idea here, but really wish you'd rename it to something which didn't collide with pg's Arc (which runs Hacker News).

There is a lot of awesome stuff you can do with "local, short-lived VMs". I've thought about how to do this securely (using hardware) -- an awesome end state would be letting a data owner with local data, and a code author in the cloud, both mutually distrustful, allow data owner's data to be processed by code owner in a safe way mutually agreed by each. You could do this with trustworthy computing, or a dedicated trusted third party environment on the net, or maybe with MPC someday.

Not sure if Linux or x86 vm is the right level of abstraction; maybe the "peggo" level where you have a higher level might be better for users. Maybe even something like Docker (but on the client)?
It's really comments like this that make me scared to death of posting a project to HN these days (so I don't). Seems to be so common now.

It's getting quite common for me to just skip reading the user comments after reading the article. This was never the case before; the comments were -almost always- better than the article.

As a sidenote, I cannot even recall when I actually read the user comments on Slashdot. On the occasion where something pops up in the RSS feed; read TFA and move on to happier things that actually make me feel good. :)

I guess I'm not saying anything new. I really wish I had a solution other than asking -you- to please imagine sitting at the receiving end: You get excited to see your project on HN, you click through to comments, and the first thing that was said was ... that.

PS. You can call me a chicken for being "afraid" of these things.
Yes, that was my point. I watched the video, and picked the camel case example from it.

I was replying to someone who said that input speed is not the main bottleneck in coding, hence implying that it's not all that useful to do things to improve input speed. While I concede that input speed is not the primary bottleneck, my point is that without macros like this to speed it up, voice input would be way too slow to do anything useful.
Given this is Microsoft this feels ironic.
No, it does not mean that. You have things confused.

IF you are at equal footing with everyone else, THEN you are "open". But the other way around does not follow.

e.g. Mozilla (or Digia, or SourceFire, or thousand others -- take your pick) can relicense their open source software as closed source, and put out binaries for future versions without releasing the source. Others using the same source code base cannot. That does not make that source code any less open.
I Need To Put My Fitness Apps On A Diet
The partition part is about how tolerant your system is to a partition situation. Having massively reliable communications between systems will reduce your MTBF, but it doesn't address how your system will actually handle a partition. You do need to account for it one way or the other. If you get a partition, you can't keep operating with consistency across the whole system.

Now when you look at patient data .. sure, eventually consistent might be just fine.. but that's not consistency as referred to in CAP. So while it's perfectly acceptable to your app, it's not about making CAP invalid.
If you're doing everything sequentially anyway, why bother with the awaiting part? As far as I can see your example would be functionally unchanged if you wrote the same code except without the await keyword.
San Francisco Chronicle drops its paywall
Yes, an icon that opens up a link in the browser is a wonderful YouTube app Microsoft couldn't replicate: http://forums.crackberry.com/blackberry-10-apps-f274/why-the...
Hmm, I wrote it so that the function closes over the player, so that shouldn't happen. The real issue is, as pointed out, that this will ask for all the names at once, rather than sequentially. Wether this is bad or not depends on how the `ask` function gets its input.
The Async suffix is here to differentiate with the synchronous version of an existing method returning T, the asynchronous return a Task<T>. With a Task<> you can do :

int timeout = 1000;
var task = SomeOperationAsync();
if (await Task.WhenAny(task, Task.Delay(timeout)) == task) {
// task completed within timeout
} else {
// timeout logic
}
Given that your handle has "racket" in it, I'll assume that you're a call/cc kinda guy.

Even if you're not, others may enjoy this argument against call/cc by Oleg:

http://okmij.org/ftp/continuations/against-callcc.html

Delimited continuations are a huge improvement over undelimited ones, but still, by themselves, any kind of continuations feel like (to me) the GOTOs of functional programming.

More recently, people are doing work with "effect handlers". See Eff & it's research papers, for example:

http://math.andrej.com/eff/

This model is safer, faster, easier, and more composable than general purpose undelimited continuations.
Oh, thanks very much :)
While that can be true, I feel like the author inadvertently overstated the amount of work that the compiler is doing here. This is really more of a case of syntactic sugar and not heavy-duty code reordering.
.... and be in breach of their own contract with those sites, who pay amazon for the privilege - for which they would lose in court if sued.

If microsoft had a signed contract with google, (which would probably entail payment to google) they would have a case. As it stands, they don't.
Researchers debunk myth of 'right-brained' and 'left-brained' personalities
> With C I would have to either depend on a 3rd party library

I can never quite get past this one. There seems to be this fantasy that you can write your code without any kind of dependencies whatsoever, and that the user can just drop it into their environment and have it work. Here's what ZeroMQ says about how to install their software:

1. Make sure that libtool, autoconf, automake are installed.
2. Check whether uuid-dev package, uuid/e2fsprogs RPM or equivalent on your system is installed.
3. Unpack the .tar.gz source archive.
4. Run ./configure, followed by make.
5. To install ØMQ system-wide run sudo make install.
6. On Linux, run sudo ldconfig after installing ØMQ.

How is depending on the presence of a massive build system, a set of file system utilities, and a compression utility different from depending on a "3rd party" library that contains an implementation of an RB tree?
I wish people would use spell check when they write headlines for blog posts.
> I can't see how contract law protects me from buying a brand other than Coke.

It wouldn't literally prevent all cases. It would allow for damages to be awarded to victims, paid for by the perpetrators, which would deincentivize manufacturers from attempting to deceive customers. Contract law provides precisely the same protection here as trademark law, except it's better, because damages can be awarded to the people who were actually deceived and potentially harmed. Also, the great side effect is you don't have all the ludicrous results of trademark law, like ownership of letters, words, phrases, shapes, and colors.
Twitter firehose ? with hashtag filter!
In fairness the frontpage (/r/all) community is often worse than YouTube. It's only when you delve into interest groups that the discussion smarts up a little (probably due to numbers)
Firebase looks awesome and would be great for something I'm working on. The first thing I did was check if it was based in America then decide not to use it.

They are synchronizing your data so it's all going through their servers.

I think it's a great idea, unfortunately I won't be using it.
True, and I think some of the examples of the unbundled sites reflect this. For instance there is good documentation of the fact that sites like 9gag and imgfave just scrape reddit for content and automatically host it. So they've maybe stolen eyeball traffic away from reddit, but not the community itself.
Is Microsoft giving copies of Windows for free now? No customer not even the most loyal, would accept this behavior from a product they paid for.
A Brief History of Modern Architecture Through Movies
Proof by contradiction:

Google can close and shutter youtube, Microsoft cannot. Therefore, by your definition, there is no way for youtube to ever be open unless Google commits to irrevocably fund youtube forever and ever. Alternatively, they could give Microsoft the option to close YouTube at any point in time for any reason, just like Google can.

?!?!?

ergo, your definition of openness makes no sense.
The Cube – New Breakthrough Set to Alter the Energy Landscape Forever
No. It is $3323.

1oz gold coin price in USD:
1969 40
2013 1362
Disable mouse accel globally in OS X ML (and lower)
I found that Facebook use made me feel worse things about other people.
I found that Facebook use made me think worse things about other people.
Is there any labor law that would require you to use a back door method?
Keep up the great work. It's a very interesting project, one I'll continue to keep an eye on.

One thing I wish would get added are more aggregators. This would add a lot of valuable use cases, in my opinion. At least one of my mini projects recently would have been greatly simplified had I had the ability to compute max's and min's in the same way as avg's.
Risk = probability of error * cost of error
Could this be because the crowd is getting older and becoming more aware of this ever increasing political and social issues that affect the industry? You could have confirmation bias. I don't see too many political/social posts, maybe that's because I have confirmation bias the other way - I look for the interesting articles you talk about. Maybe the site needs to go full Lisp articles once a month to flush out the jokers (can't remember the language, haven't seen one in a while sorry)
Last I checked, gold makes a poor meal.
Azul has made a JVM with predictable GC.

http://www.azulsystems.com/technology/java-garbage-collectio...

So yes, it is possible to have pauseless GC. That won't fit all problems that C++ is used for (like embedded), but it certainly hits on the server software side of things.
54 Google Analytics Resources – The 2013 Edition
Because it is supported in older Pythons on some servers I work on. Works with PyPy. It has less dependencies (just greenlet) and easier to build.

gevent also has been thrashing around is it 1.0 beta? Switching to libev or libevent. And eventlet picked up more steam with more test coverage.

So no one big issue just a bunch of small ones.
Reminds me how lucky I (we?) are to be free of the monotonous prison of every day life which most Americans are stuck in.
Yes, I didn't use that service & Google Reader was totally opt-in, in no way were people required to use it.