skysight-inc/HackerNews huggingface dataset:
Agreed. SMTP is such a lasting protocol that it is unlikely e-mail will be replaced in the long term. I certainly think improvements can happen on the server side, but the protocol has good failover, and for the most part, the reliability is just as good if not better than physical mail delivery.

Yes, the protocol seems dated, but it is well-understood and implemented by thousands of vendors. It's a miracle that we were able to agree on a protocol, and on top of that, agree on a protocol that is relatively decentralized (although it does depend on DNS if you prefer not to use an IP to email). It isn't like Twitter or FB where a single vendor controls the platform.
Am I the only one who didn't like Speaker for the Dead? To me it felt like a big let down after Ender's Game.
I share falcolas's take on it. On other end, Cloudfare says "Pay us $200-5,000 (avg) a month, we'll handle the details, and don't worry about a data bill." AWS method sounds like a step backwards in cloud DDOS protection. Or a step forward in their next annual report. Whichever. ;)

I'm still a believer in the value of dial-up, leased lines, satellite, or radio for aiding security. You still have to apply protection to them but don't have whole Internet coming after you with protocols that aid attackers more than defenders. My method is typically to obfuscate identifiers for Internet services and use methods like authentication at packet level (eg port-knocking or VPN). The configuration details are sent over the non-Internet medium. Even dial-up can move basic credentials and some I.P. addresses quickly. Don't need to do it often, either. If you hide it (eg SILENTKNOCK), attackers start getting pretty pissed and desperate wondering why not a single packet gets through.

This method is primarily for intranet sites, though. Web sites or apps facing the public naturally are at high risk. Best to just use Cloudfare or a similar service along with hiring good security folks.
It could be [1]. IMO, it sounds more like something slapped on top of Flask. You will find similar packages for Django, Pyramid and so on. Tornado feels natural in this sense as it aims to be asynchronous right off the bat.

See also, aiohttp [2] which seems very promising (Python 3.3+). As an aside, I've never seriously considered Python 3 till now after taking a look at aiohttp.

[1] https://flask-socketio.readthedocs.org/en/latest/
[2] http://aiohttp.readthedocs.org/en/stable/web.html
Thing is, in Go that library cannot be written generically.
> Unfortunately in the Ruby world live webservices like this haven't really taken off much yet

And they probably never will, whatwith blocking I/O being the norm and no decent concurrency primitives. Too many better alternatives at this point.
Ángel Di Maria – Extreme Makeover Photoshop
"
Next time you're in a conversation about language design and someone sighs, shakes their head and tells you that sad legacy design choices are just the burden of the past and we're helpless to avoid repeating them, try to remember that this is not so."

I think rust is neat, but this is somewhat arrogant.

Rust is amazingly young. 10-20 years from now, when rust hopefully has bajillions of users, if this is still true, then you can say it.
I mean, do you really believe that Rust won't have things that turn out to be warts from 1.0 it can't remove 10-20 years from now?
Do you have any data on this? Does that include their $300 installation for 10 years of service?
The processing queue is kinda irrelevant, CPU bound tasks require lots of CPUs, and more CPUs if you want a processing queue.

Since Node / nginx are already processing queues it's kinda pointless to add another one.
I don't think this sentence is important to the review. The quoted bit is the entirety of the reference to Tolkien and WWII.
Even if AWS CloudFront isn't as good, I wouldn't expect AWS to go around actively encouraging people not to use CloudFront and and to go to a competitor instead.
C++ has roughly the same undefined behaviors as C, plus a bunch of additional ones for the C++ specific features.

Also, you'd be surprised how many stubborn C programmers apparently think that mutable global variables are an excellent and convenient time-saver. (Not that C++ programmers do inherently any better here, cf. Singleton)
Best way to defend against an L7 DDoS is to have the origin hidden, and to cache everything at a large number of geographically distributed PoPs.

This helps in 99% of cases, and where it doesn't it is simply because there is a resource that cannot be cached and that the edge must revisit the origin for. This is especially true whenever that resource is expensive for the origin to provide (involves database lookups and cannot be cached: shopping carts, login pages, search results), these are the ones which require you to rethink your application design.

If you're an application developer and wondering how to design your application to withstand a DDoS attack, then instead shift to just thinking: How can I make everything that this application does be cached by an edge server?

When you're not under attack using CloudFlare makes sense and saves you money anyway. At least... it does for me. On one of my web applications I use Amazon S3 for user attachment storage within a forum CMS, and my bill used to be upwards of $200 per month for just one of the sites I run. I changed the application so that it proxies the S3 request/response, and then set a CloudFlare Page Rule to sit in front of that path, and configured it to "Cache Everything". The effect of this was to reduce my AWS S3 bill down to $20 per month. After that I did it for every site.

There's a hell of a lot of benefit to using CloudFlare in conjunction with AWS, and not just when you're facing an L7 DDoS.

Disclosure: I work for CloudFlare (last 9 months) and have been a CloudFlare customer for 3 years and I was offered a job by AWS and also been an AWS customer for 3 years.
Using All the App Stores
You might get a better idea by watching a bit of Russ Cox's tour of the Acme editor, in particular the couple of minutes starting around 12:40 [1]. In there he shows how the contents of the various editor windows in the editor are available as files in the filesystem, which means that editor macros can be written in any language that can access the filesystem, without any special bindings.

[1] https://www.youtube.com/watch?v=dP1xVpMPn8M#t=12m42s
Yeah, the "be ready to scale to absorb the impact" seems to be in their best interest. Maybe not their network ops teams, but their billing teams must like it.
I get your comparison, however DNS is not actually that fundamental to P2P networks, all you need are IP addresses (at least not after the bootstrapping phase). Whereas this is making the entire connection setup dependent on these signalling servers.

You're right, there are public signalling servers and such. I just wish we weren't so restricted in setting up direct connections, such that you could do it through your bootstrapping peer in the network.
This article sounds like a "Customer Success Story" PDF you can download on IT companies' marketing websites.
> Be Ready to Scale and Absorb the Attack

What if you can't absorb the cost that is attached with scaling ?
Outside of helping build a startup, you have literally every other job site at your disposal. Go on any of them.

Within the context of building a startup, Sam Altman suggests it is more than 10x easier in SF and SV - however I think it is more like 50x easier. You can talk to 50 people on "startup" terms in FL before you'll find one person who is as qualified and willing to work on a startup, who will actually do it, as you can find in SF.

For better or for worse, HN is a YC property, and it's mostly about startups. In that sense even NY ranks far behind SF.

In fact, you can go farther and say that inside SF, twenty people can build the better part of a billion dollars in value together from nothing. Outside SF, you will get accused of being a thief and trying to take advantage of the same developers. It's a complete non-starter.

I realize most people posting advertisements are somewhat farther along, but the point stands. SF is where they are funded and able to post startup jobs.
Assuming you are talking about Computer Science electives (non-core CS courses):

- Scripting Languages

I feel this is one of the most valuable courses from my education. Knowing which tools are available and what they are good at is crucial to becoming an effective developer.

- Parallel Programming

This course had the most influence on the way I think about algorithms. Understanding the difference between parallel processing and multiprocessing is important when you start developing high performance applications. This course really challenged my concept of optimization. Heterogeneous parallel programming can be a little obtuse and there can be a large learning curve for each architecture. You will be amazed how effectively you can transform naive algorithms into powerful programs for multi-CPU architectures.
Another thing just occurred to me: Amazon might just be guilty of recommending to others what worked for them without thinking twice about context, alternatives, etc. Long ago, Anonymous tried a massive DDOS attack on all kinds of sites from Mastercard to Amazon. Of them all, Amazon didn't take a scratch [1]. This was due to their then-new EC2 architecture for handling spikes and a ridiculous amount of spare capacity saved for holidays. Article has the details.

So, maybe it's what's worked for them, their thinking hasn't really changed, and now they're just offering others the same thing? And upselling them in the process? Thoughts?

[1] http://money.cnn.com/2010/12/09/technology/amazon_wikileaks_...
It's been a good while, perhaps a decade now, since usenet was really a commonplace thing, so it's unlikely that anyone will ever flock there now.

Usenet's downfall perhaps in part stems from its legacy as part of the "nice" era of computing's history, when it was just sort of assumed that everyone using computers were friendly people in academia and thus we didn't need to worry about bad people doing bad things. Some people would date Usenet's downward spiral as starting with Eternal September, but I think really it was just spam and binaries that killed it (the latter making usenet very expensive - and risky - for ISPs to offer as a service; which meant then looking for a (probably) paid-for alternative news provider).

Once people stopped using it, it became hard to see why it was good in the first place - and everybody by that point was doing everything through their web browser, and there never really was a great usenet experience through the web (certainly Google Groups wasn't it).
E-voting summary in Buenos Aires
Node also works well for desktop apps because it's got the run loop.

Desktop apps are insanely high frequency IO apps, basically, its an Input Queue reading the mouse / keyboard / touch screen and a run loop, which is exactly what node is, except node originally envisioned the input queue being web requests. And most desktop apps are single threaded on the UI.
"Transferred to the internet, email inherited these limitations: electronic messages are not real-time, they’re hard to manage in huge amounts..."

Anything is hard to manage in huge amounts, and anything real time is harder to manage even in small amounts.
> "was called IRC"

IRC ain't dead yet. For example, there are IRC channels for many of the projects within Mozilla:

https://wiki.mozilla.org/IRC
Ask HN: Great gifts for kids?
Hello everyone,

Besides the obvious (Legos, wooden blocks, trains...), what was your favorite game growing up?
What would you like to receive as a gift if you were a kid nowadays?

Thanks!
One popular use that I'm not seeing a lot of other folks talk about here is using node to create build tools for web development.

Gulp and Grunt have been very popular as a way of, for instance, watching files and then minifying CSS an JS assets automatically while creating web pages in systems like WordPress that don't have built-in asset pipelines.
Yes python can, no flask can't.

https://github.com/eventmachine/eventmachine/wiki/EM-vs-Twis...

http://community.eveonline.com/news/dev-blogs/stackless-pyth...

Node.js is one of the few webservers built ground up async.
Node.js is in an interesting position. There is a lot of libraries and new ones are coming out at breakneck speeds. It's also a way for frontend developers to transition to backend tasks. And it gets a lot of mindshare at the moment, with MongoDB and microservices.

But in my opinion a lot of Node.js ecosystem is a lot of mismarketed features. Many developers doing backend services with Node.js actually think that it's the fastest thing available, even though multiple benchmarks, e.g. techempower, shows that it really isn't. And even more people seem to think that it is a way to do simple parallellism, so they won't have to understand threads and locking, which are really complicated stuff. But as many have said here, Node.js does not support threads, or parallelism without running multiple different processes. Which can be fine if you don't have any shared state between your processes. And with no parallelism in process, it is quite easy to actually block the event loop by running anything that is CPU and not IO bound. This can be a loop that is too long, too much math, or even parsing a JSON string without using streams. All of these can block the event loop, which means that no requests are going through that process while one request is parsin a JSON.

And even though there is a lot of libraries and frameworks for it. The quality is often really, really bad. As in invalid MD5 algorithm bad, etc. But there are also some gems such as Bluebird for promises, which makes the callback hell more easier to handle.

You will also face immature debug support, profiling and static analysis. You barely get any refactoring help from your tools, even though IntelliJ IDEA does quite a good job with basic refactoring and debugging. And you will have to spend time with handling odd bugs with no logs showing up on crash, or stuck processes when something has gone really wrong in the code, with no way of knowing (if you don't have DTrace) where the code is stuck.

But there are stuff Node.js seems to excel at. It is really quick for creating a simple REST service, feedback loop is really quick as the services restart almost immediately (at least when you don't use all the latest ES6 transpilers). And if you want to create isomorphic applications, where the server can render a Javascript site on behalf of the browser for the first request, or even successive requests for mobile use, there is no better platform than Node.js. And if you know that you will not do anything that is CPU bound, just IO bound stuff, you can still use any library available. Where for example in Java or Python, you would have to find specific libraries that support your chosen async IO framework.

I would use Node.js between a backend server done in a more robust ecosystem such as JVM, and the browser. Where Node.js gets the data from the backend and does it's magic with isomorphic React for the client.
Hi! It has CORS support for GET request, make sure you use GET.

Also, please let me know if you get high score, this is only meant for humans ;)
Direct message (Twitter's feature)
wait, why the downvote? Literally no download link even though I can actually run it: http://i.imgur.com/LVY5I9W.png
[AngJobs](https://github.com/victorantos/AngJobs) took 1-2 seconds to load the [HN filter](http://angjobs.com/#!/jobs/inbox/hn?july)
Got to love Dave's commentary, Always learn a thing or two from his teardowns.

I wonder if anyone from pebble can comment on the FPGA, I thought that was a bit odd as well, Is it just so that the processor can sleep as much as possible and doesnt have to wake on small trivial things ?.
What happened to HR professionals? That was a devastating decline in an otherwise stable sector.
It could be that it's easier to shine when you're driven by someone else's requirements.
Exactly. It's not like we don't know plenty of mistakes yet, which will bite them a few years down the road.
Developing Web Applications with Haskell
You do know that you can type ESC instead of using the Meta/Alt key, right? So Meta-x can just as well be typed as ESC x, and Meta-Control-s can be typed as ESC Control-s.

This is a backwards-compatible binding for ASCII-only terminals, since ASCII only has control characters, and lacks a Meta or Alt key definition.

(Additionally, if the ESC key is far off, it can usually also be typed by using Control-3. This does not work in a window of a proper graphical Emacs, though, only in a terminal.)
The most common use case would be interop with C libraries that use untagged unions. This is a significant hassle when writing C bindings in Rust today.
If I would attempt a re-reading of Dune, would it be advisable to skip those two sequals? It's been over 10 years since I read Dune and among the few things I remember is that I found it a painfully slow read full of details I wasn't interested in and words I couldn't bother to learn.

My English is a bit better now, and I like to think I've become a bit more patient ;) So perhaps I could attempt it again and see if I appreciate it more.
"How do bugs/mistakes change the intent and meaning of the actual work by the person creating it?"

Often a bug comes into being because our ability to translate our intents into language is limited by our perceptions.

In code, this works out that we think we told the machine to do one thing, but in practice our instructions have side effects or unforeseen meanings in corner cases.

In language, this could be seen in two way. On one hand, even the best of us can't grasp all the possible meanings of our language and stories, especially given the fact that they will be read in a future that might create a whole new context for those words.

And, on the other hand, sometimes we are strangers to ourselves and are, to over simplify, acting on subconscious impulses that we don't fully understand.
Fully open FPGAs including the synthesis tools.
Your attention. I have no idea how old are your kids, so here some quick ideas: go fishing, rollerskate together, go out camping or to a bike ride. Added bonus: if you don't know how to fish or ride a bike this is a perfect time to learn ;)
I've tried lmgtfy a little, but is there an easy way to make a match 3 game in javascript?

My goal in life is to make a match 3 game with food and you get points based on the number of calories.
> Yes there is - the ability to verify identity and hence actually prevent MITM attacks.

In asymmetric encryption - we both will generate a public/private key pair. We can walk up to each other, exchange USB drives containing public keys, and now we can communicate securely. We have just created a secure connection without a certificate.

All the CA is a middle guy that says "Oh you want to talk to someone claiming to be Alice? Get their public key and I'll verify it as I know Alice." But really how do you trust that middle guy?

> And in most cases where an attacker has access to read a network, they can write to it, too.

Well maybe - put it into context. If a wifi system is open - it's extremely easy to sniff packets (shown by the success of Firesheep). ARP spoofing and other tricks are more complicated - but less likely to happen (someone would have to prop this on a table and it would be a dead giveaway that they are up to no good [1]).

> You can't ignore key distribution no matter how annoying it is.

I'm not ignoring it - I just want to shift it from having central CAs that can sign certificates for any domain (superfish anyone?) to CA certificates that can only sign for specific domains. Perhaps the CA certificate could be stored in DNS (even glued to the domain like NS records are)? Perhaps we keep the current CAs but force them to allow them to sign a CA cert that is restricted to a certain domain (for free or next to free)?

> If a CA issues a false cert, that becomes a mathematical fact, and the CA gets revoked.

That doesn't matter - if I'm a bad guy and find this I know I would only have a limited time before it's discovered. So, if I'm a smart bad guy I find a targeted attack, get the bad certificate and do my attack. By the time people figure out what happened - my attack is over and I got what I wanted. Just think of the amount of damage that could be done in a busy place with free wifi and a bad gmail.com certificate. I'm waiting for the day that happens and everyone can't understand why their [insert service provider] account was compromised...

> Security here is simply not a binary thing.

I never said it was - but the current system is broken [2] [3] [4] [5]. Even Schneier says it's broken - which I find he is pretty respectable in the crypto industry.

[1] http://i.imgur.com/MFbOE0C.png

[2] http://www.theregister.co.uk/2011/04/11/state_of_ssl_analysi...

[3] https://www.schneier.com/blog/archives/2015/03/chinese_ca_is...

[4] http://arstechnica.com/security/2011/09/comodo-hacker-i-hack...

[5] http://waf-devel.blogspot.com/2015/04/stop-blaming-chinese-w...
+1 for Conkeror - close enough to emacs on the browser for me!
The "easy" way to do this is to run the edge detection twice. In other words, run edge detection, then run edge detection on the result of the edge detection.
> Then you have the compile speed issues, the problematic tool chain [...]

Did you ever use Haskell? Those issues are far worse in Haskell than in Scala.

You just hear more people complaining about Scala, because it is used, while Haskell projects are usually not developed and maintained anymore after the author finishes his PhD.
1 cli to run web inspector server, control multi-device in the same time
I read one BH/KJA book and it's name/content is not worthy of recollection. Horrible, fourth grade reading level stuff, IMO.

The Butlerian Jihad was very intriguing to me, as well. As a youth I found it hard to imagine such extremes that would bring about such a rejection of technology and it's benefits. At 45yo, however, I find the drawbacks of modern systems have become too 'costly' to my person and am embarking upon my own cleansing of over-bearing, insinuating devices in my life. Cupertino, Redmond or Mt. View(any Corp, for that matter) will never be allowed to become my masters, my moocher bff nor my nanny beyond a static, transactional relationship. Despite what the marketeers would have me believe, they are doing me no favors entrenching further dependence to their systems. Long live the fighters!
It's actually worse than this article states. If you get the "AT&T Next 24" plan that just means you can upgrade to a new phone after 24 months. You are actually agreeing to make 30 payments so you end up with $56 tax plus $29 x 30 or $926.

Edit: Also note that you are only eligible for upgrading after 24 months if your phone is in good condition--no cracks, chips, etc. If your phone breaks not only do you have to buy a new one, but you have to keep paying for the old one for 30 months!
Orwell, Human Resources, and the English Language
In September 2001 (and again in 2008) it was "go shopping for America!" Cynically manipulative nationalism knows no borders, sadly.
React-heatpack: quick React development with webpack hot reloading
PopcornTime is also a NodeJS app.
Is it just me, or does $4 million seem quite "reasonable" for something this rare and with this much work invested? Yes, it's a large sum of money, but given the choice between a vintage race car or the Spitfire, I'd take the warbird every time (and I'm not a pilot).
It's more functional than most languages called "functional".
I have an improvement to this:

Run the edge detection twice. That way you get better gradients along sharp edges.

Single run: http://i.imgur.com/kusJDRo.png

Double run: http://i.imgur.com/rHYSzpq.png

To me, at least, the double looks better. Especially in the stems.

Just add the following to FrequencyTable.cs, after line 18 (var edges = ...)

detector = new SobelEdgeDetector();
edges = detector.Apply(edges);