skysight-inc/HackerNews huggingface dataset:
Unfortunately, as abritinthebay noted, Closure Compiler doesn't really understand JS and compile it to better JS. It understands a certain style of JS with some significant limitations and compiles it to better JS as long as it actually runs in your browser.

We used it for a while but we've now completely abandoned it. The overheads of complying with its rules were significant, but worse, it sometimes produced output that didn't run in some older browsers where the original code did. Now, that might really not be Closure Compiler's fault, if the output it produced was technically equivalent to the input according to the JS standards. However, the fact is that we can't ship code that runs into bugs in production and whether those bugs come from the tools or the browsers does not change this.

We fixed that problem by removing the Closure Compiler step from our build process and switching to Uglify. It took a little time, but not much. It gave a handy speed-up in the development process, since CC is relatively slow. But most important of all, it has reliably produced working code from working code.
A practical security guide for web developers | Hacker News https://news.ycombinator.com/item?id=12140477 DevGuide/02-Policies, Standards and Guidelines.md at master Â· OWASP/DevGuide https://github.com/OWASP/DevGuide/blob/master/01-Foundations... Security Engineering - A Guide to Building Dependable Distributed Systems http://www.cl.cam.ac.uk/~rja14/book.html Wiley: The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws, 2nd Edition - Dafydd Stuttard, Marcus Pinto http://as.wiley.com/WileyCDA/WileyTitle/productCd-1118026470... LastPass Security Notice | Hacker News https://news.ycombinator.com/item?id=9721212 LastPass Security Notice | The LastPass Blog https://blog.lastpass.com/2015/06/lastpass-security-notice.h... Linux workstation security checklist | Hacker News https://news.ycombinator.com/item?id=10134009 KeePass â€“ questionable security | Hacker News https://news.ycombinator.com/item?id=9727297 SJCL â€“ Stanford JavaScript Crypto Library | Hacker News https://news.ycombinator.com/item?id=13820722 System design primer https://news.ycombinator.com/item?id=13823979 wordpress stripe plugins. how secure are they? The Netflix Tech Blog: Netflix Security Monkey on Google Cloud Platform http://techblog.netflix.com/2017/03/netflix-security-monkey-... Quick Start Guide â€” security_monkey 0.6.0 documentation https://securitymonkey.readthedocs.io/en/latest/quickstart.h... https://news.ycombinator.com/item?id=13862253 Try to get CS 161 University of Berkerly - Highly recommended esp Prof Wagnor or Prof Weaver http://www-inst.cs.berkeley.edu/~cs161/sp16/ Laptop security https://news.ycombinator.com/item?id=13854625 https://www.oreilly.com/ideas/jessy-irwin-on-making-security...

I am sick today. So I couldn't sort the links or format them. Hope it helps you.
See also previous discussion on /r/rust: https://www.reddit.com/r/rust/comments/69i105/the_grass_is_a...
My Heroku values (2015)
>The US is lucky to have strong and effective regulators like CARB and the EPA.

The EPA isn't exactly an example of efficient bureaucracy but putting CARB on the same level is an insult to the EPA
I didnt say it was unsafe, I said it crashes.

Unwrap is a shortcut to let you be lazy; it exists for no other reason, and it causes application level crashes in way that is very much easier to avoid in other languages.

That 'catch_unwind' exists is evidence that some kind of panic recovery is necessary... and I wonder how often you hit it from a real panic, vs. a stray lazy unwrap?

Whats your justification for unwrap? I've never seen a meaningful justification for it other than not wanting to handle errors properly.

An application error (returned null) shouldn't abort your application with a hard error, no logs. Its just plain poor practice to use unwrap().
Not much, paying loans first. Should be finished with that in two years (age 25).
This goes pretty much for every tool though. Applying a tool to a job it isn't well suited to is always going to come out as a frustrating experience, be it a hammer or a piece of software.

What I always try to do is to get a feel for the problem space trying different methods with as little investment as possible. That way you will - once you decide to go full power after a certain solution method - at least have a feeling that you are on the right path.

Dogmatically trying to shoehorn every problem into the toolset that you know how to use is a way to stay reasonably productive but it rarely leads to optimal outcomes, sometimes you simply have to learn how to use a new tool in order to get to the maximum.

I'm the last person to jump on new bandwagons, still have a dumb phone, don't use facebook and still run my own mailserver. Even so, when a tool has a significant and most importantly measurable advantage compared to the tools I'm already familiar with I'll adapt.
Your main audience is used to command lines. :)
The Khoisan have occupied much of Africa for much of human history. [1] I don't know exactly how the Bantus displaced the people that they came across, but I suspect some form of foul play.

1: http://www.nature.com/articles/ncomms6692
Where can I read more about it?
I actually initially had it as sort of a callback:

.otherwise(panic(msg))

(although I assume a rust panic! isn't really a function call).

But isn't the way to get the default, simply to use unwrap()?

In a simple script, failing to open a configuration file for reading is likely a show stopper, and you probably want to log/print an error (no such file, wrong permission, etc).

But in, say, a paint program, you'd normally not want to panic and crash if the image file a user selected to open in a file dialog is invalid or went away between the click-to-select and the click-to-open. In such a program you'd want to handle most file errors much more defensively.
"(I mean, if I wanted to make a case against the EU, I'd do it on the basis of how Greece was treated - but even Greece didn't choose to leave, as they recognised that it would make them even worse off economically."

Greece had literally no choice. The ECB threatened to deliberately nuke Greece's economy if they left. Since the process of leaving would have required about 5 years of careful extrication to be done painlessly and the ECB and switching off emergency lending can be done in hours (they gave Greece a little taster of that), Greece was in no position to do really do anything except kowtow to ECB demands, which they did.

Meanwhile Varoufakis's contingency plans to wrest control back of the tax agency from the troika and issue an alternate currency as a first step to potentially leaving attracted Orwellian charges of high treason.

If the EU/ECB wanted to make it possible for Greece to leave without nuking their economy, they could have, which probably would have been more conducive to being paid back in the long (long) run. They went for their pound of flesh instead.

All of which makes me wonder what they have planned for the rest of Europe.
You don't want to use strncmp() for this; aside from the timing attacks it opens up, using strncmp() for these kinds of comparisons implies that the operation you are performing is "string a is a prefix of string b" (or vice-versa).

Even though your example ends up being ok-ish (if the computed hash is a prefix of the response, perhaps it is ok to ignore any trailing junk in the response), intent is important for code quality and maintainability.

In this instance, the operation desired is "string a matches string b", which means strcmp() would be the right solution (ignoring timing attacks).

Of course, since we're talking about sensitive crypto operations here, neither is really the right answer. But in non-crypto contexts, if you want to know if two (valid) strings are the same, just use strcmp().

The "n" and the length argument doesn't automatically make strncmp() "safer" somehow; it is a totally different operation.
It might be easier to do:

let config: HashMap<String, String> = serde_json::from_reader(file)
.expect("config has invalid json");

This means that you can just do

let jenkins_server = config.get("jenkins_server")
.expect("jenkins_server key not in config");
The UK is not Greece - it is, still, one of the most advanced and powerful countries in the world, of global importance culturally, economically, scientifically, militarily, and in myriad other ways. For its own sake the EU better hope the UK does not go tits up.
..Silesia inside Poland [..]But both of those regions(and I am sure there are others like it around the globe) have their own groups of people who are unhappy to be part of a larger country and have aggressive campaigns to leave.

You are imagining things - there's no real separatist movement in Silesia, those who campaign for "independence", are just doing it as a practical joke, the same way some people in US declare their religion as "Jedi" and have some meet-ups, local fan groups, etc. Plus, there's only few hundred, maybe a thousand of them.

Please, do not give HN community the wrong impression that they are a real thing.
Hopefully we don't need megacities in the future
That's an excellent point and one that kept me from trying the deep learning approach for a long time. But in the end the machine + rudimentary deep learning provided its own dataset and that really made it work.

So even if I didn't have the data to train the model I had enough data to bootstrap the process and sometimes that's all you need.
In the box on the right, it says "Japanese, Korean and Chinese characters are currently not supported", which is disappointing, but probably why you're not seeing it in the results.
Well, that actually sounds a lot better than I feared - I have a aging aspire acer one that works fine as a lightweight Linux desktop.
U2F-test-page: Test FIDO U2F devices in your browser
Latest Java ME Embedded release is under a year old, supports Raspberry PI and STM IoT platforms etc: https://blogs.oracle.com/java/java-me-embedded-83-release
No, I think that's quite backward. The only reason you (not "we" as a species) believe in something called "time" is because you think you've experienced it. You may protest and say "no, here's a picture of yesterday," but that picture does not prove anything [1]. Your belief requires a series of (perfectly reasonable) inferences which could nonetheless be wrong. But most of all, it depends on the compelling feeling you have that time is passing. And that is an illusion. You may have a faint sense of what I mean by those words, but without inspecting your experience very precisely, it will probably remain no more than a curiosity.

Time, space, matter, objective reality: these are all inferences that rely on your not paying close enough attention to a remarkable sleight of hand your consciousness is pulling on you. Once you manage to do this, it indeed becomes nonsensical to look for "explanations" of consciousness in terms of the very things it abstracted into seeming existence.

[1] http://rationalwiki.org/wiki/Last_Thursdayism
Very inspirational Story
I almost exclusively look at the "new" section of HN, so I see almost every new post, whether people clicked on it or not.

I'd suggest instead that "Cambassy – Your People Around the World" doesn't really tell us anything about why we'd want to click. What does it even mean? I have zero idea what it is, what it does, or why I'd want to know more about it.
> The bug is that they used strncmp, but used the length of the incoming hash from the client as the string length to compare, versus the actual length that the hash string is supposed to be.

Ignoring timing attacks, they should have used strcmp(), not strncmp(). strncmp() is for testing if one string is a prefix of another; they wanted to test if some string equaled another.

Since this is crypto related stuff, though, they should be using a strcmp()-like routine that works in a content-independent timing fashion.
I thought Grothendieck made it clear that he did not want his notes to be published.
We have little respect for the dead.
'shipping cheap workers in'.. and from where did these workers come? The EU perhaps?
What gave you that impression? It works just fine for my use-case, and I will most likely be able to add more use-cases by virtue of being able to enrich the data from other data sets out there once I have the part identified.

It is possible that at some point to get to the last .1% or so I may have to embed features that were engineered but right now there is no indication that that will be the case.
Maybe try some wordplay/agitprop with "fahrvergnügen". If I come up with a good zinger, I'll let you know.
100% sure
hello viewers, this is only legit, secure and 100% hacking service .
i hack Facebook, email and Instagram, and this service attracts some few buck, and payment must be made before hacking commences. the victim will never be aware of such activities. if your loved one is keeping secrets, panic no more, hack into there and accounts and see for yourself

for more information about my hacking service , please email me on jonestrujillo2010@gmail.com
If I had big bins of sorted parts I wouldn't need the machine ;)

This is an approach that will work for parts that are so common that even after a few runs you have lots of them but the 'long tail' of lego parts is the vast majority of parts and they are quite rare.
panics aren't for recoverable errors, in any circumstances. It is technically possible to "halt" the unwinding from a panic, but 1) that's intended for C interop, 2) the feature has been deliberately designed to make your life hell if you try to use it to emulate recoverable exceptions, and 3) Rust makes no guarantees that panics will unwind at all, it is entirely legal for a user to configure panics so that they all abort instead.
You forgot attention mechanisms, that's a huge one
Very interesting indeed. It reminded me of SysInternals before Microsoft bought them.
I honestly found error codes in go to be pretty pragmatic. You pay a small cost on the writing side, but it's very clear and straight forward.
> The one exception to this is that, recently, there has been a surge in use of crates like error-chain to cut down on the code you need to write for defining custom error types and their corresponding `From` impls. But it's still all built on the same fundamental building blocks.

One takeaway I got from playing around with Rust (and using GitHub code search to work through my issues) was that coding style will probably differ considerably from project to project, which is very C/C++ like and maybe a good thing for the language, but I found a little disappointing.
> panics aren't for recoverable errors, in any circumstances.

And I understand that. Hence why unwrap everywhere is harmful.
I might be misunderstanding you, but of course not. Equal rights for all. Egalitarianism. But it seems as though these laws, well meaning or misguided as they may be, give special privileges to certain groups. Rather then preserving true equality and liberty for all.
> It turned out that the std::string empty string reference count was just doing a vanilla ++, no locking, nothing, variable not marked volatile, nothing.

The whole implementation is smells of silliness, because there is no need to track how many references there are to a global null string, which need not even be dynamically allocated.
People are going to be in for a shock when it becomes normal to spend 70% of your gross income on housing (ownership). The amount of things people value these days other than living in an "important" city with jobs is declining. House in a nice neighborhood with good schools, near transportation, cell phone, broadband, Netflix account, food, healthcare. Everything else is "disposable," pun intended.
The black box nature of the regression can make things difficult, though. If you have a couple other parameters which indicate 'black male' with high probability, you might find layer one reconstructing the notion of gender and layer two making decisions based on it.
Hey Matthew, hey Rachael, you should open an office back here in Halifax!
Tetra Pak’s technology keeps food and drink flowing safely from farm to table
We are actively working on rustfmt, which should add some consistency overall. Some people won't use it, of course, but many have said they will.
There is no need for keep-alive for a single HEAD request. Why use HTTP/1.1?

cat << eof |nc -vv nautil.us 80
HEAD / HTTP/1.0^M
Host: nautil.us^M
User-Agent: curl/7.47.0^M
Accept: */*^M
Connection: close^M
^M
eof

Anyway, it looks like they fixed the problem or I was mistaken.

I will need to find another example.

Meanwhile looking on stackexchange one can still see people running websites asking whether to block or "turn off" HEAD as recently as last year.

If a user expects every website to respond properly to a HEAD request, then the user might be occasionally "surprised". This is because not every person running a website understands or agrees how HEAD can be useful. Sadly, GET is the only method that a user can expect to work on across all websites.
Checked exceptions probably would have been fine if there were only one kind of checked exception. Most methods would declare it and they'd all be compatible.

This would be similar to how Go functions always return the same error type, but without the boilerplate.
Yes. It was hilarious that the poster thought strcmp was the solution...

Though perhaps memcmp with fixed size buffers would be better still, no worrying about null terminated strings.
Most of what they are indoctrinated into is quite the opposite.
It's $20.50 here in Brooklyn at a small neighborhood place (including tax and tip)! Ridiculous. I bought a premium instant ramen on Amazon, add my own meat/egg and it's as good or better.
I had one of the VW diesels with the cheat. VW bought it back from me, and I bought another VW station wagon. To avoid VW, I would have had to purchase an SUV or CUV. VW is the only company selling a reasonably priced station wagon in the U.S.
Ignoring the argument for why or if VW should shutdown; if they shutdown tomorrow, wouldn't you expect other automakers to increase production to fill the gap left, and those automakers are going to need more people, and likely more facilities to increase their production. Someone with industry knowledge would probably be able to do good analysis, but the number of people ultimately out of work would be much less than the total number of current workers.
> I didnt say it was unsafe, I said it crashes.

Your phrasing implied that you said the crash was not safe, as you put "unsafe" in quotes and contrasted it with the crash. At least, that's what I understood you to be saying too.
> At what point does it become reasonable to conclude that strncmp, and every other string API that treats the pointer to the string and its length as separable variables, are too dangerous to be used in security-sensitive software?

In general I agree, we have a long way to go to writing more secure software by default.

But this specific issue is different. The issue was not the string length was incorrect (the length passed to strncmp was the correct length for the response string); the problem here was a logic problem, which is harder to get right just by switching string implementations.

The buggy code in question was basically (in an imaginary language with fully managed strings):

if response is_a_prefix_of expected_hash:
allow_login()

when it should have been

if response is_equal_to expected_hash:
allow_login()
This doesn't look like a "Hey look how much I improved HN's CSS!" kind of project. It calls itself a "HN clone built with Vue 2.0 + vue-router + vuex, with server-side rendering", so one presumes that it was made to showcase those things (as opposed to, because the author felt HN desperately needed a front-end framework and thumbnails).

I mean, if you think it's using Vue wrong then flame away, sure. But critiquing that you prefer HN's current design strikes me as a bit like going to a "TodoMVC in framework X" project and commenting that you prefer to use paper and pencil.
Exceptions actually can need RTTI, though not necessarily all of the RTTI that things like <typeinfo> provide. For some details, see the -fno-rtti flag for GCC, for which the documentation says[1]:

Disable generation of information about every class with virtual functions for use by the C++ runtime type identification features (`dynamic_cast' and `typeid'). [...] Note that exception handling uses the same information, but it will generate it as needed.

[1]: https://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/C_002b_002b-Dia...
Here imperative style means you can use language constructs in e.g. Python, such as if-statements and while-loops, to directly construct models. TensorFlow, Theano, and other graph-based frameworks typically require creating branches and loops as nodes in the graph.

Graphs have advantages but they can be unfamiliar and sometimes difficult:

Some advantages: easier to serialize the whole graph and distribute computation; optimization can also be performed across the graph nodes (e.g. see XLA in TensorFlow).

Some disadvantages: it can be more difficult to write and reason about, particularly for recurrent neural networks which can utilize loops a lot; also interop with reinforcement learning environments where much of the computation is performed in an environment outside of the graph.
In case someone cares to understand what this means:

- "An Error trait" means that when you define a new type that will store error information, you have to define how it implements the Error interface.

- "appropriate From impls"... you are trying to wrap a number of error types in your own special error type, you need to tell the compiler how to convert another specific type into your type new type. There is an interface (trait) in the standard library for this purpose called "From". This is done as an alternative to inheritance in an error system. The trait signature looks like this:

trait From<T> {
fn from(T) -> Self;
}
Absolutely correct, but for me what really nails it is the explanation. That's rare, at such a high quality!
`git add -p` allows to interactively stage changes per chunk quite easily.

The '-p' flag is also supported on reset and checkout commands.
'To convert people from reason to "gut".'

Here in the UK all discussion of migration was successfully suppressed for decades by shouts of racism from the left. Perhaps if a sensible debate on migration had been allowed, and perhaps if the EU had been willing to yield a little more than absolutely nothing around controlling migration, Brexit might have been avoided.
Here is what's even worse:

1. The way it was working in Miami is drivers would get 2 tickets when they were stopped, I think a. No taxi license; b. Illegal ride for hire. Both are $1,010 so a total of $2,020 per stop;

2. The laws escalate from civil penalties to criminal charges upon the 3rd such violation (I.e. 2nd stop could be criminal)

3. This also means 2 stops and you are out from your Uber driving

4. I don't think Uber has actually paid anyone's fines, at least it appears all these years later articles say the fines are still outstanding.
Some of the comments on here are the very reason military leaders don't share experience with those that have never lived the life.
Commercial deep learning ASICs will definitely happen. The Nvidia stuff is in a way getting there, to go from 3500 ops / tick to 35000 ops / tick with the same power consumption will most likely require more than a merely incremental improvement in the hardware.

It would have to be:

- less general

- a smaller process node

- possibly more than one chip on a board tightly coupled

- specialized data types

- very tight coupling between memory and computation

(so maybe memory on the chip)

- a slightly higher clock speed, say twice as high

GPUs are much too general but if all the factors above can be realized a factor of 10 in a PCIe add-in card should be possible.
The Anatomical Venus: Wax models used for dissection in the 18th century (2016)