skysight-inc/HackerNews huggingface dataset:
I disagree. It’s similar to computing NaN-mean or NaN-sum for an array of all NaN values (which returns 0).

Let’s say some program calculates the mean of an array and then adds that mean to some accumulator.

For purposes of updating the accumulator, the mean of an empty array is perfectly well-defined: it should add nothing to the accumulator (add 0).

This might be a major operating requirement for the mean function, such that rather than guarding or pattern-matching on an empty array and handling a failure is far worse than having a better 0-length convention.

Consider the difference between the “head” function of some List type, which has to either raise an exception or wrap the return value in some Maybe structure, because it’s literally not definable, vs the “length” function which has an obvious natural definition for empty arrays that is often highly preferred to some design where length(empty_list) throws an exception and everyone has to handle it in little bits of custom code to specify 0.

To me this topic is all about usability and not about some parochial claim that some operation is nonsensical.
Any division either works and returns a result, or doesn't work and doesn't return a result. This is similar to any other function that maybe returns a result (returns an Option<T>/Maybe<T> or even Result<T, E>).

Perhaps it's not a good design to have division as an operator a programming language? Just like

Maybe<int> i = ParseInt("foo")

one should also do this for division:

Maybe<int> q = Div(n, d)

Is there any language that does this (returns an option for default division?)

Obviously, this is also the case for ALL other operations on finite number types because of overflow. But overflow is MUCH rarer than division by zero issues, at least in my experience.
OK, thanks. If you feel that way, probably others do as well. I'd delete that comment if I could.
From 2014, FYI
Well, T is Technology and E is engineering. I will leave it up to any person in either category to decide where they go. My rough estimate was Sysadmin, IT support, etc is T. Electrical, Mechanical and Civil engineering are E, but I'll let software squeak in too I suppose.
Airplanes are a common case where people have long stretches without connectivity, either due to not paying for wifi or any if the other reasons it might be unavailable or unusable.

Being on a NYC subway train is an even more interesting case, because depending on the precise client setup there's often intermittent or bad connectivity but rarely a good sustained connection between stations.

As in most of the world, smartphones are pervasive in both of these contexts.

Mobile and computer apps used to support these cases a lot better. As Bay Area connectivity has gotten better in those areas where well-off techies congregate (e.g. not underground Muni Metro), apps have gotten much worse at this except for apps targeting developing countries like India and Africa.
This kind of type becomes really tedious to use unless there is some sort of viable "subtyping"—you certainly want to be able to use a non-zero number where any number works and, ideally, you want to be able to recover a non-zero number when you write a function that takes in a normal number and always returns a positive value. If you're forced to use a bunch of explicit conversion functions to achieve this you add a lot of noise to your code and, generally, the most common function is going to be along the lines of "I know this is positive, so throw an error if it's 0"—which is exactly what we get anyway.

Explicit might be better than implicit most of the times, but it is possible to be too explicit.

That said, we can achieve this, although it's probably a bit trickier than you'd think at first. The best option I know is called "refinement typing", which basically allows you to specify types as subsets (ie "the set of integers which are not 0") and automatically verifies whether your functions actually return a value in the subset.

Liquid Haskell[1] is an example of a system you can use today to play with the idea. It uses an automatic logic solver (Z3) under the hood to automatically prove that your refinements hold. (For example, I believe it should be able to automatically verify that the function f x = abs x + 1 will never be 0.)

[1]: https://ucsd-progsys.github.io/liquidhaskell-blog/
> I've been playing around with an implementation of the ML semantics+type system

Sounds cool. Is it open source? I've attempted to write some ML interpreters and compilers, but I've always hit a brick while when I try to move from a basic "mini-ML" type of language -- which is relatively straight forward -- to one including pattern matching.
How do I change the way I think about achieving my goals?
I have been thinking about various problems. Problems like how to get that girl I want, how to make more money, who is it that I want to be, etc.

Well my mind just isn't capable of solving these problems. So what do I do? I try to expand my mind by reading and talking to people. But it's still my own mind progressing at a snails pace. Progressing so slowly that things will not change unless I find some other way.

I keep falling into these same unproductive modes of thinking. I am so intensely driven but all of my energy is going nowhere.

Please help me think differently so that I can analyze my goals from new angles.
What if I told you one conspiracy being true doesn't prove all other conspiracy theories to be true? It doesn't even affect the likelihood that other conspiracy theories are true.

Conspiracy theorists should be at the forefront of "combating conspiracy theories" because, ostensibly, they should care about the truth, which most conspiracy theories are not.
All these static site "generators" seem pretty silly. If you're going to make a static site then just make a few template pages by hand in html then copy and edit them to fill with whatever content.

It works even better if your webserver has server side includes (SSI) turned on. Then you can make header/footer/sidebar/etc templates and just insert them with a line in the page templates.
https://outline.com/www.wsj.com/articles/magic-leap-headset-...
Years ago, I had a car with a sophisticated ignition lock system (not my choice, but not relevant to the story). It was somewhat finicky, and creating a new key was not easy. And of course no chance of starting it without proper key!

That car ended up stolen right from under my nose (I was within 100 feet of it, indoors but would hear if the alarm turned on) and the only thing I found in there when I came back for it was the sophisticated security system. The thieves just ripped it out in no time and with no sound, and drove away.

Since then I'm somewhat skeptical about how much protection such systems really provide.
Whoah, why are there so many fish??? They're swarming near the cameras like it was feeding time at an aquarium!
https://news.ycombinator.com/item?id=152428
Finally other projects start to grow up a little bit to Ember.js, I still feel the most matured and powerful is Ember. Not hyped, because it is just works out of the box. Incredible. And it is already with us for years. ;)
you are explaining why 0 / 0 can approach 17, this is much less controversial, and is often considered the bottom element...
They are Turing complete, see https://github.com/durka/brainmunch
This. This and Jekyll. Jekyll is good too.
The only issue I've encountered is that NVidia JetPack doesn't run on anything >16.04, so I've had to use a VM running 16.04 to use it. Beyond that, all software that I was using on 16 works perfectly on 18.
My most successful day with kids was showing them Processing. Everyone seemed to really enjoy it. Every hour or so I'd go up and show something new. Even after the first day everyone ended up with some really creative art pieces.
Yeah, (x/y)*y = x is true whenever it's a meaningful statement. x/y has no meaning in standard mathematics when y=0. 1/0 isn't infinity or anything else in standard math, it's literally un-grammatical nonsense.
How spec compliant is Netsurf? JavaScript is "superglued" into the code base in all 3 major open source browser engines, mostly because it's also superglued into the specs.
Then it will be not math.
I'm another brazilian here. The crime rate is not as bad as of Venezuela, and >50% of all (ALL) brazilians desires to leave the country.

The problem is simple.

1- It's quite impossible to leave poverty due to state regulations.

2- People are killed by robbers/murderers, or jailed by officers if they try to prepare/defend for themselves.

So both economics and justice are completely distorted towards inhumanity. There's nowhere to go.

That's a sad reality, and it's not a coincidence that Brazil has the strongest world-wide desire for libertarian philosophy, by students/youngsters.

https://trends.google.com/trends/explore?q=%2Fm%2F0cpvcd

https://trends.google.com/trends/explore?q=%2Fm%2F052h3

https://trends.google.com/trends/explore?q=%2Fm%2F01hfv2
Here's another good one for you...

What does your favorite programming language return for 3/2 as compared to 3.0/2.0? Many will return different values.

EDIT:

for clarity of my point: integer math that uses machine types is pretty surprising compared to what we would expect from "math" in general for division.
Julia gives "Inf" and Inf+Inf =Inf and 1/Inf = 0.0

I prefer this because if you have a function converging on 0 then you will see growth towards Inf - then Inf - rather than growth followed by a cliff; which could then propagate into all your other calculations and move you from the very small to the very large in an instant.
It's here [1]. I've made some good progress on the typechecker while on vaca. Still looking for a better name : )

[1] https://github.com/georgewfraser/funlang
> substitute TV with books [etc.]

Not to be snarky, but it's "replace TV with books"; to use substitute, it'd be "substitute books for TV."

(Yeah, I know language evolves, but Humpty Dumpty had his head, such as it was, in a warm dark place — '"When I use a word," Humpty Dumpty said, in rather a scornful tone, "it means just what I choose it to mean—neither more nor less."' [0])

[0] https://en.wikipedia.org/wiki/Humpty_Dumpty#In_Through_the_L...
You're absolutely right. Not only that, but it's impossible to distinguish a bad result like 1/0 vs a good result like 0/1.

Even Javascript is better with "NaN"
Just yesterday I had a 1/0 bug (code iterating along some line segments that forgot to account for the possibility of a zero-length segment). If 1/0 was 0, the code would have worked correctly instead of crashing.

So, there's one data point in favor. :-)
I guess it provides an objective definition of when something is simple or complicated. This could have applications in statistics or machine learning, where "simpler" hypotheses could be less likely to overfit. There are computable measures of "simplicity" (unlike Kolmogorov complexity) based on compression algorithms or computation time (Levin complexity). There are also apparently connections to statistical mechanics, but I haven't looked into it and I don't know if it's useful.

See this paper on how to cluster using compression: https://arxiv.org/pdf/cs/0312044.pdf
My broker does! Vanguard supports U2F, though weirdly only with Yubikeys.
It's talking about integer arithmetic, so it's already not true that (x / y) * y == x. For example, (5 / 2) * 2 == 4.
DNC serves WikiLeaks with lawsuit via Twitter
String.hashCode() is plenty unique
Brazilians are generally extremely cynical about authority and the law. News about political scandals "acabando em pizza" and confrontations with the "policia de choque" are commonplace, and day-to-day life is filled with "dar um jeitinho" and "gambiarras".

Under-the-table abortions happen all the time, politicians and police are assumed to be corrupt, invading land to steal ownership is a thing, etc.
California wildfire suspect posted about Qanon, other online conspiracies
I didn't even think my comments were controversial, but most of them have been voted down at least once, so clearly there is a miscommunication going on.
The suggestion is that it was edited posthumously, perhaps embellished by her father. These sorts of facts all apparently fall under the banishable offense of Holocaust denial, (a sacred religious belief), which is why the whole suggestion of making historical topics for discussion illegal is insane.
I live in Florianopolis, the capital of one of the best state to live in Brazil (Santa Catarina). I have been robbed three times. Even people who have never been a victim will have the same feeling. Burglars are seen (and effectively are) potential murders. Every now and then someone is catch by security cameras being shot during an armed assault for meaningless reasons, such as the criminal not liking your face, not liking your possessions or discovering that you work for/is a policemen.
I can't really comment. I don't know how they are doing it and why they made that choice. I assume that Julia was already boxing integers in some fashion at which point this 100% makes sense to me.

Also, given the performance profile that you are seeking to allow programmers to achieve, I think boxing all integers makes sense, then you can give folks protection from integer overflow and underflow and otherwise make how the computer does math more closely approximate what we expect from doing math.

I think that following my above reasoning that only having floating point math can also make sense. That is... in most programming languages 3 and 3.0 are different. Such that 3/ 2 = 1 and 3.0/2.0 = 1.5.

We allow for 3/2=1 because, integer math is faster than floating point math and we want to allow folks to go as fast as possible when doing things like addition, subtraction and multiplication and accept that we can't represent all the numbers that come from division and give an approximation.
I think this is the crucial bit. Division by zero in fields means nothing, but if you want to tack on calculus (part of pretending that doubles are reals) then zero is a perfectly good limit for division and it turns out that defining it as anything at all breaks your system.

I didn't like the blogpost, because it's smug, and doesn't even mention this obvious objection.
Right, it just means the limit of that path tends to 17. It's not a well-defined limit.

In a function of one-variable, there's a distinction between one-sided and two-sided limits. I don't know what the terminology would be for multivariable functions, but this is closer in nature to a one-sided limit.
Isn't that essentially what floats already are? A sum type of numbers, infinities, and NaN(s).
Sad news indeed. One of my favorite Weinberg quotes (phrased as a law):

> Weinberg's Second Law: If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.

Weinberg’s books are filled with named “laws”, so many that some of his books have an appendix that lists them all. Here’s one of my favorites:

> Boulding’s Backward Basis: Things are the way they are because they got that way.

[Quality Software Management, Vol. 1: Systems Thinking]
Audi releases more e-tron details
It seems like once a week I see comments like this. This was not my experience at all.

With internships, I made over 60k a year in grad school. I worked on projects of my choice. I did not do a postdoc after graduating. I graduated from a small, unranked department and got a tenure-track position at an R1 university in a top 75 department.
A dual-motor powertrain with a 95 kWh lithium ion battery capable of 150 kW DC fast charging powers the e-tron. This reported charging prowess would be a world-first, and 30 kW more than Tesla's Supercharger network can offer, allowing the e-tron to charge in as little as 30 minutes.

30 minute charge time is so close to making a long, multi-charge trip feasible.
Right. So the multiplicative inverse property _breaks_! He just points out that it breaks, and thus you need to use a more complicated property instead. That doesn't mean that the property doesn't break.
I encourage you to look at the graphs. Yes, the value along the y-axis is 0, and the value along the x-axis approaches positive and negative infinity. It's path-dependent. Take a look.
Did you mean 2/3?
I don’t really care what private companies do, and I hope people are looking for alternatives (e.g. Mastodon) as a result.

However, I am finding the authoritarians coming out from the left and the right to denounce basic human liberties in the name of the greater good very troubling. Thankfully, amending the US Constitution is very difficult.
Why would CERN want to spend that kind of money for a top-level domain?
I kind of offended you personally or what? The entire point of this article is against the math and it means it's a bullshit.
A simpler explanation is that BMW doesn't want to be legally liable if a car crashes but the special sensor algorithm reports it as a break-in, or vice versa.

After all, they're just sensors, and they're still just guessing. Far better for them to report "something is wrong" than to file a false report.
In case you're wondering, Elm has a strict "no runtime errors" rule, but avoids this by not having integers.

Another interesting example is array access. What should a[len(a)+1] be if your language doesn't have runtime errors?

Elm returns a Maybe type. However, this would be very awkward if you're actually doing a lot of calculations using arrays.

[Edit: Pony is different.]
Thanks! Yeah this was a lot of fun. Hit me up if you have questions with the documentation at all. I remember there were one or two things that were written somewhat confusingly.
I realize Chrome is different from Android, but there was a story about Fortnite bypassing the Android store recently and allowing users to download the APK directly. Couldn't someone develop an alternative app store?
Worth noting this is for the x87 fsin instruction. For x86_64 typically a library function is called (which in turn uses SSE2 math instead of x87) rather than generating inline code.
`3/2 = 1` is a consistent answer as long as the programmer understands modulo. The way you're phrasing it makes it sound like there are languages out there that say "`3/2 = 2` because 1.5 rounds up to 2".

just so long as you don't expect a consistent answer between python2.7 and 3.x... >.>
> "Reducing boot time" is of great importance for short-lived containers

Containers don't tend to run an init.
> It’s similar to computing NaN-mean or NaN-sum for an array of all NaN values (which returns 0).

Why would you want to do this rather than validating understanding of the data before computing on this?

> For purposes of updating the accumulator, the mean of an empty array is perfectly well-defined: it should add nothing to the acculator (add 0).

That's not a mean, though, that's a quirk of how you decide to (incorrectly) compute a mean. What's the point of such a program? It should refuse to compute when it's given no values--that's clearly a category error.

Otherwise, you're not using a mean, you're using a mean-or-0-when-lacking-a-mean. Might as well not call it a mean at all so other people can read your code.

Yes, this is pedantic, but this kind of subtle changing meaning of terms is exactly what leads to bugs. Name your functions accurately.
that possibly could be easily detectable... it might be better to have hardware switches that would allow you to disable all sensors individually whenever you want some privacy... there are many sensors on my phone that I never need but possibly could leak some information, yet I can't disable them... Also, I just installed an app on my phone that didn't require any permissions, yet the company was able to send me a text message... Android permissions suck a lot, still.
No. But most programming languages I know of return different results for 2/3 vs 2.0/3.0.
Phtt. Migrate? That's crazy talk. Rewrite!

On a more serious note: that's why I exited frontend dev 15 years ago and never looked back. I now do hard-ass C and C++, and once I write something it runs for many years with no changes, and dependencies are often a decade old or more.
Nobody dies of 'old age' any more. They die of something that was under treatment in general. That's all.
Workona is awesome! I've been beta testing it for a little while now, and it's helped me finally get a handle on all my trains of thought. Recommend!
Just FYI, the idea that Nature Communications is inherently "untrustworthy" is completely unfounded, you can't take a quick look at rankings or briefly skim a wikipedia page and get a good picture of how "serious" or trustworthy a journal is. It is a generally a well-regarded journal, I don't personally know any actual scientists who would turn their nose up at research published in it just because of the journals name (although, there are some Nature-branded journals that many do instinctively scoff at, mostly Scientific Reports, but IMO that's unwarranted too). Most of the big names in my sub-field of physics have co-authored a paper in this journal.
To clarify, in Javascript 1/0 is Infinity, not NaN.
I trust hashes and I wouldn't trust a vote carried out On The Blockchain either. How many billion dollar Ethereum contracts have had bugs again? How many people have had their money stolen because their endpoints were pwned, thereby avoiding the entire crypto stuff and just keylogging?
I enjoyed that. Thanks for sharing!
Many many moons ago, we were taught in school that the "C" language got its name because it was the successor to the "B" language, and the next big language would be "P" because the computer industry was iterating through "BCPL."

Can anyone confirm that was true at the time? (Obviously that's not how things worked out.)
Not debating anything. Anyway, the OP defined the issue as the decline in history, philosophy, religion. Thus my comment.
Rust recently added nonzero number types (see https://github.com/rust-lang/rfcs/blob/master/text/2307-conc...). Though I believe the primary motivation here was the reduce memory usage in some special cases.
Because of its close integration with Office 365, and it's cheaper.
People should learn their tools and systems, but I think it is very important to make it as easy as possible for people to get started with your framework, language or system. Nothing kills interest as quickly as not even being able to get started on something; to get people up and running is probably the single most important thing if you want your project to get any significant amount of users.

I struggled a few months to get a decent working structure for multiple environments working when I had to do a largish front-end project (out of my comfort zone and not really a big fan of Javascript), so I think tools like vue-cli are a good idea: set up a sensible base structure, and work on from there if you have both experience and time. Showing an idiomatic architectural layout might also help people to move more quickly from basic "Hello, World!" examples to larger, non-trivial applications, which in my experience is a problem for most programming languages.
Pony is not 1.0 yet. The language is still malleable.
The problem being that constructing isFinite(..) for machine integer types is basically impossible.
Well no, it's mostly how someone started by asking you a question (in a slightly rude way in my opinion), and you immediately found a way to work in how they're a terrible person, and how they're probably a terrible person on account of being white.

This isn't a "white fragility, white people can't handle hearing about privilege" deal, it's a you deal, where you specifically are using race-based stereotypes to dismiss and dehumanize your fellow human beings.
Well the spiritual successor to C is "D", so...

https://en.wikipedia.org/wiki/D_(programming_language)
All right guys, looks like I can get some sleep now ;). If there's more questions, I'll definitely reply to them tomorrow, thanks!
ah thanks for the explanation!