Mathematical Notation Is Awful - <AUTHOR> http://blackhole12.blogspot.com/2016/07/mathematical-notation-is-awful.html <comment><USER3> These are just issues that someone unfamiliar with a field would face. None of them are problems for those of us in the field.

First, the expectation thing. He's using a special case, E(X), and complaining that the more general case doesn't follow the general case. It's like saying "Well the plural of mouse is mice but the plural of house isn't hice!". The general definition of expectation (for a discrete probability) is

E(f(x)) = sum f(x_i)* p(x_i)

If you start with this general definition, both E(X) and E(X^2) are perfectly natural. The author's error of starting with the special case in no way implies an issue with notation.

And how is the fact that Wikipedia is inconsistent between E(X) and E[X] in any way mathematical notation's fault? If you read a novel that starts using ' for quotes and switches to ", that's an issue with the novel (assuming its not stylistic) and not an issue with the typography in general.

<comment><USER4> I have taken ten years of math in school and then calculus, discrete math, linear algebra. That's all useless if I want to follow math in a simple research paper because they're using notation common in THAT field and it has nothing to do with the notation in another math field.

And it's all V hat superscript pi subscript h. It's not like code, where I get descriptive variable names. And you thought pi meant pi? No, it means policy in THIS context.

<comment><USER5> Reading a "simple" research paper requires a different approach compared to reading a newspaper or a blog. I hope the following explanation helps.

The notation actually helps to keep things simple. I think of it as a kind of metalinguistic programming [1] where a notation is introduced which then makes the important parts easier to understand.

I am not mathematically inclined but I have to read papers containing maths quite a lot of the time. I tend to read them 3 times.

The first time, I tend to skip the equations altogether and just get a feeling for the paper - what is it about, is it useful for me to read?

The second time I have a pen and a highlighter where I actually label the mathematical symbols with arrows and words (using the textual descriptions). I also highlight important sentences. I think of this stage as trying to make the paper as clear as possible for later reading.

In the third stage I am trying to understand the paper as a whole - <USER2> it seems you try to do on the first read, I am familiar with the frustration because this is what I used to do.

I quite enjoy reading papers now and I have more respect for the notation.

[1] [https://en.wikipedia.org/wiki/Metalinguistic_abstraction](https://en.wikipedia.org/wiki/Metalinguistic_abstraction)

<comment><USER4> > The second time I have a pen and a highlighter where I actually label the > mathematical symbols with arrows and words (using the textual descriptions).

Gee, it's almost as if we should be writing the words out instead of writing one letter variable names.

Funny how programmers found this to be good practice and mathematicians still write with a notation that's purposefully unreadable.

<comment><USER6> > Gee, it's almost as if we should be writing the words out instead of writing > one letter variable names

That's how things were way back in the day, and it was terrible.

</comment></comment></comment></comment></comment><comment><USER7> I think the fundamental source of confusion might be due to not understanding the concept of a random variable. In his example, X is a random variable; the expectation E[X] is an _functional_ applied to its probability mass function. Given this, it should not be surprising if it seems to behave differently to "any other function, in math".

If you understand this, I think the notation is natural:

We have a random variable X, which takes value x_i with probability p(x_i). Thus, the random variable X^2 will take value (x_i)^2 with probability p(x_i).

Given that the expection for the random variable X with p.m.f p(x_i) is defined as E[X] = \sum x_i p(x_i), it should be clear that to obtain the expectation of any random variable we must sum over the product of (value) and (probability of that value). It should also be clear that this gives E[X^2] = \sum (x_i)^2 p(x_i)

I'm confused by his comment that: _p(xi) isn 't, because it doesn't make any sense in the first place. It should really be just PXi or something, because it's a discrete value, not a function!_

The probability mass function _is_ a function: for a given value, it gives the probability that the the discrete random variable takes that value. To calculate the expectation we use the values obtained by evaluating the function at discrete points, but what else could we do?

<comment><USER8> You are right, and the deeper source of the authers beef seems to be that he wants mathematics to be about textual rules. Now that's a fine thing in a computer language -- and there are philosophers who say mathematical truth is no more than computation. But mathematical _notation_ is for humans to talk about things that have meanings that humans can understand.

The fact is that E[X^2] is natural way of an important concept. Whereas "\sum \sum (x_i)^2 p(x_i^2)", need mean nothing at all (especially is $p$ is not defined over all the $x_i^2$).

<comment><USER9> > Now that's a fine thing in a computer language -- and there are philosophers > who say mathematical truth is no more than computation. But mathematical > notation is for humans to talk about things that have meanings that humans > can understand.

Then how come an unfamiliar piece of source code is easier to follow than a mathematics paper using unfamiliar notation?

You can look up the definition of each function and learn precisely what it does, without ambiguities. You can open up a debugger and trace every step of the algorithm. Source code tends to be formatted to emphasise its division into units that can be analysed separately. Even if the code uses a framework you don't recognise, you can probably understand some of the underlying logic just fine, thanks to a consistent syntax and (often) descriptive function names.

In a mathematical paper, often there's some notation that isn't defined and there isn't even any pointer where to look for definitions. Important objects are given one-letter names. Theorems are often only numbered; good luck remembering what lemma 2.17.3b was about. Proofs are written in prose (instead of something like Leslie Lamport proposed[0]). You have to fill in conceptual gaps and remind yourself of unstated assumptions. Notation and terminology is often ambiguous — what does "exponential time" mean? Is it DTIME(2^(c*n)) or DTIME(2^polynomial(n))? Does "increasing" mean "strictly increasing" or "non- decreasing"? Is zero a natural number? And so on.

A mathematical formalism that could be interpreted in a purely mechanical way would be a huge improvement.

[0] [http://research.microsoft.com/en- us/um/people/lamport/pubs/p...](http://research.microsoft.com/en- us/um/people/lamport/pubs/proof.pdf)

<comment><USER10> > A mathematical formalism that could be interpreted in a purely mechanical > way would be a huge improvement.

Look at Homotopy Type Theory:

> [https://homotopytypetheory.org/](https://homotopytypetheory.org/)

<comment><USER11> I feel obliged to point out that HoTT is… really rather abstract. I'm just starting to learn about it now in my spare time, and I hold a master's degree in mathematics specialising in logic.

</comment></comment></comment></comment></comment><comment><USER12> If you think probability theory is bad...

The old joke that "differential geometry is the study of properties that are invariant under change of notation" is funny primarily because it is alarmingly close to the truth. Every geometer has his or her favorite system of notation, and while the systems are all in some sense formally isomorphic, the transformations required to get from one to another are often not at all obvious to the student. —John M. Lee, "Introduction to Smooth Manifolds"

</comment><comment><USER13> I started doing a lot better in calculus when I started using longer notation (e.g. f = x -> x³ instead of f(x) = x³) and making sure that things "type checked". For instance, this tendency to use f(x) to refer to a function, rather than just f, was very confusing to me, because f(x) is an element of the co-domain while f is a function (typically from real to real in my undergrad classes). I had to figure this out by myself because the textbook I was using and the prof all went with the notation that wouldn't type check. When I finally realized that dy/dx should instead be (d/dx)(f), things started being a lot clearer to me: derivation takes a function and returns a function and f is a function so everything checks out.

<comment><USER14> It's good to think of dy/dx as (d/dx)y. In addition, it is also possible to make some sense of dy/dx. Here's one very hand-wavy way of looking at it.

Let ε be something very small, and define the difference operator d so that (df)(x) = f(x + ε) - f(x). Usually we don't want to handle the functions dx and dy by themselves, because they are so small, and their exact values depend on ε. But when we divide dy by dx we get something that is no longer ε-sized, and doesn't (in a limit sense) depend on the value of ε.

And why think way? When I learned the chain rule dy/dx = dy/du * du/dx I was told that even though the du's appear to cancel out, this is just abuse of notation and basically a meaningless coincidence. I understand that the teachers just wanted students to be careful; they don't want people "simplifying" dx/dy to x/y. However, I was never really satisfied with this explanation. I finally realized that by thinking about it using the difference operator above, it is not a meaningless coincidence: the du's actually do, in a sense, cancel out.

</comment></comment><comment><USER15> This a thousand times. I boycott math notation. My most memorable math moments are:

\- giving a talk on notation in high school (I was not tasked to do this, I decided to do it on my own) because I was FREAKED OUT by how we were using tons of symbols nobody had ever explained or defined

\- converting all Math I encountered in University to Common Lisp programs to get rid of the shit notation

\- bursting into crazy laughter when after five algebra lectures the prof notices that the students parse his notation differently than he does

Give it names, use S-Expressions.

<comment><USER16> I had the similar experience when I started to learn math, even the Common Lisp part. I knew how to program from young age and I thought math syntactically. From that mindset it was obviously painful.

But once you really start to understand math, you realize that mathematical notation is not very formal or rigorous. It's shorthand visual help to keep track actual mathematical objects behind the notation. S-expressions are perfect for formal definitions and programming. They are not so good for actually thinking mathematics. Mathematical notation can be dense and contain lots of information.

Notation is problematic for students because underlying concepts or notation is almost never explained well. For example, I don't remember anyone explaining what functional or implicit functions are before using them heavily. I had to figure them out myself.

</comment></comment><comment><USER17> I had an exam in probability theory yesterday, so these topics are still quite fresh in my mind. The confusion already starts when he uses the equation

      E[X] = \sum_{i=1}^{\infty} x_i p(x_i)

for the expectation. In my class it was introduced as

      E[X] = \sum_{\omega \in \Omega} X(\omega) P(\omega)
           = \sum_{ x \in X(\Omega)} x p_X(x)

which totally makes sense if you know that X is a function that assigns a value to each possible outcome. In most cases we don't actually care about the outcomes, so there is the second description using p_X.

The subscript X is important to highlight that p is not just some arbitrary function, it is p_X, the probability mass function of X.

Now when you want to compute the expectation of X^2, you use

      E[X^2] = \sum_{\omega \in \Omega} X^2(\omega) P(\omega)
             = \sum_{x^2 \in X^2(\Omega)} x^2 p_{X^2}(x^2)

i.e. the substitution he wanted to do actually works when you make the dependency of p_X on X explicit.

Now p_{f(X)} is not that easy to compute from p_X in general, because you have to account for multiple possible ways to reach the same value, e.g. x^2 = (-x)^2. For f(x) = x^2 we have

      p_{X^2}(x^2) = p_X(x)             for x = 0
        and        = p_X(x) + p_X(-x)   otherwise

If f is more complex, there is a third way using

      E[f(X)] = \sum_{x \in X(\Omega)} f(x) p_X(x)

which amounts to the same thing, but is usually easier to calculate.

</comment><comment><USER18> One interesting observation that popped into my mind when I read the OP: Mathematicians don't write mathematical notation in papers/books by hand anymore, they use a far more verbose language called LATEX.

Wouldn't it be great if every time you saw a mathematical formula there was a little widget to push that would show you the "source code" in LATEX++, and LATEX++ was like LATEX but made up of stringently defined mathematical operations (like '\element_wise_multiplication' instead of '\plus_sign_with_circle_around_it')? :D

<comment><USER19> LaTeX... now _that_ is unreadable. Traditional mathematical notation is just fine.

<comment><USER18> Have you seen x86 machine code? ;P

<comment><USER19> Long ago, when I took a computer architecture course, I learnt the 8086's instruction format. I don't remember a single thing about it.

</comment></comment></comment></comment><comment><USER20> I remember being so outraged when i was first introduced to derivative in high school... Seeing that they didn't use the same notation nor exact same definition in my physics class and maths class, in the same year, that was making me absolutely furious...

</comment><comment><USER21> I have similar feelings with music notation too. we never applied our "user experience" standards to mathematical notation and music notation. If these things were invented today, we might come up with better ideas.

One painful experience I have reading math is telling which variables are "vectors" and which are "scalars". another is the similar looks of certain greek characters and english characters, such as alpha and a.

<comment><USER22> I was just going to mention music. I learned some piano as an adult. I was never able to accept that the same note positions on the treble staff had a different value on the bass staff. Yes, I understand why it's so, it's just terribly user-unfriendly.

Also, in keys other than C, I felt that it wouldn't kill them to mark every instance of the sharp and flat notes, instead of doing it once at the beginning and implying it everywhere else.

</comment></comment><comment><USER23> Somewhat related: [https://aeon.co/videos/maths-notation-is-needlessly- complex-...](https://aeon.co/videos/maths-notation-is-needlessly-complex-it- can-and-should-be-better)

<comment><USER24> And the associated HN discussion:

[https://news.ycombinator.com/item?id=12137673](https://news.ycombinator.com/item?id=12137673)

</comment></comment><comment><USER25> If I could fix one things in Maths, it would be to introduce an explicit import statement. Right now it's very hard to work back what the symbols mean in a specific context unless you're familiar with the field.

       from url/to/geometric-algebra.pdf import X;

I don't mind the overloading too much and it would always be possible to alias symbols in case two or more fields are user together.

<comment><USER26> Very cool idea!

I think this would work both at the logical level (e.g., the concept of azimutal angle in a xyz-coordinate system) and as a stylesheet level (theta for physcisits, and phi for mathematicians).

Such annotations would really help with browsing math content—you can see what prerequisites concepts are used in a paper from its import statements, without the need to read the whole thing. Also, you could browse from the other end (reverse-imports / uses), looking for docs that make use of a given concept.

</comment></comment><comment><USER27> Math notation is a language that evolved over centuries.

The English language isn't consistent but we all seem to be able to use it to communicate here.

Same thing with maths. Some notations are holdovers from earlier eras, but we still introduce them to students in case the run into it in an older book (dx/dy for example).

And maths isn't just about computation. It's also about expressing ideas, and sometimes that is easier when the notation isn't rigidly 'executable' as some posters here would have it.

This article also reminds me of: [http://knowyourmeme.com/photos/582861-reaction- images](http://knowyourmeme.com/photos/582861-reaction-images)

</comment><comment><USER28> Leibniz's notation is useful for the chain rule and change of variables for parametric based equations

<comment><USER29> Leibniz notation is very interesting as it is not technically correct but it is still is used in lots of maths today. Recommended: [http://math.stackexchange.com/questions/21199/is-frac- textrm...](http://math.stackexchange.com/questions/21199/is-frac-textrmdy- textrmdx-not-a-ratio)

</comment></comment><comment><USER30> The post is a pretty childish rant. One of the great facets of mathematical writing (and not learning, unfortunately) is that you can explicitly define your own notation, and then use said notation whenever you want. The author even notes this in his final paragraph, but doesn't seem to see it as an advantage of mathematical writing.

Prior to modern notation, mathematics was written out in english in full. What we have now is significantly better than what existed before modern mathematical shorthand.

Also, the expectation is an operator and not a 'function' (in the sense that it does not take values in one of the canonical scalar fields e.g. R, C). The notation makes perfect sense in this setting. For example, the expression E[x^2] should be interpreted as E acting on the function x -> x^2 and not on a number x.

</comment><comment><USER31> As a developer I'm not quite happy with a single-letter names. Of course it's ok for minor local things to be named 'x' but for more important values and functions there is no problem these days to have a readable names just like in software. So you could actually read of a paper without guessing and searching those epsilons, lambdas and cappas and cryptic symbols. Use expectation(x) instead of e(x), use mean(y) instead of \hat y and so on.

<comment><USER32> It really depends. Within a given field certain concepts are so common that you really do want a way to express them in the most terse possible way, just as programmers use i for index, err for error and n for counts. This allows you to put more stuff in a smaller space which means you don't have to jump back and forth to understand something -- sort of like how it's nice to put different parts of an app into different files and even to split them up into separate libraries, but go too far and the flow of the application becomes opaque.

Have you ever had a chance to read some of those really old mathematical proofs that didn't use any mathematical symbols at all? They're a nightmare to try and understand. There's a tradeoff. No disagreement, though, that mathematicians tend not to be very great at finding the sweet spot where the trade-off balances :-)

(Also, the sample mean of y would be `\bar y`, hats are for estimators in general.)

</comment></comment><comment><USER33> In my experience people that are very verbose, that talk or write at great length and with ease, tend to have a dislike for terse formulations. Sometimes to the point of being offended by it. Math is just about the ultimate in terse notation and perhaps the author is one of these verbose people.

The same thing can be seen with programmers: The verbose programmer writes a lot of lines of code and is proud of it, while the terse programmer is proud to remove or simplify code.

</comment><comment><USER34> This is just really weakly argued. Firstly, the notation does use capital X and and lowercase x. You need to realize these are different. It's not substitution to go from X^2 to x^2. Capital letters are not real numbers, and thus it's a type error too. Secondly, if you are familiar with differentiation and integration, you are familiar with straight substitution not always being correct.

</comment><comment><USER35> One of the cool things of Mathematica is that it solves these problems. But the result is, unfortunately, somewhat more verbose.

</comment><comment><USER36> their naming isn't that good either.

All these words that are already used for other things.

Magma, ring, group, body, lense, optic...

<comment><USER37> You should learn what the concepts mean instead of judging the names associated to them. We call something a Ring to avoid saying "a set with two operations which behave in a certain way [...]" every time we refer to it.

<comment><USER38> "We call something a Ring to avoid saying"

Why a "Ring" and not an "asda2+"?

<comment><USER36> the problems I had were mostly with good names. So names that are 1. already used in everyday life AND 2. really fit the concept.

These words have definitions in my head that I use often and now math uses them differently.

Like 'Menge' (german for Set) which has 'almost' the same definition in math and everyday use.

I like the physics approach more, gluons, quarks, protons, etc. these are all words that never had any definition in my life in the first place

</comment></comment></comment></comment><comment><USER39> Funny, I said the same about Andrew Ng's ML course.

Ultimately, if what you're teaching is going to end up in software, why use math at all? Use code or pseudo code. I don't think it's bad to just give the working algorithm without having to prove the math.

Really how many students will end up being computer scientists anyway, and research and write about new methods of doing AI, and do the actual math? So few. I guess that's a simple criticism of academics.

It's just easier to work with code than mathematical notation most of the time, in my view. You can't replace math, of course, but when things are simple enough, it could be avoided. It's a matter of making math accessible to the most people.

Code is amazing because a computer can check to see if it works. A computer doesn't understand math.

<comment><USER40> Understanding underlying math is what allows people to create improved algorithms. If it's just "implement scikit" then you barely even need a developer.

Understanding why things work is still important and why software companies still routinely test on algorithm design.

<comment><USER39> If you're a beginner at ML, the first course don't really need to be so thorough on math, especially for simple things like regression.

I'm not saying math is dispensable, I'm saying that it could be used much less because code allows it in many situation.

</comment></comment></comment><comment><USER41> Domain-specific languages, notation, and vocabulary exist for many disciplines. They are for the benefit of experienced practitioners and allow them to express common concepts and ideas in a precise and concise fashion to those who have been also been trained in the art.

Sometimes jargon, abbreviations, and cryptic notation exist to artificially make it harder for outsiders to understand what's going on, but the examples in this post don't convince me. The true issue here is that the appropriate Wikipedia article has no link to the "Simple English" version.

Most humans are capable of using context to distinguish usage. Operator overloading in programming languages and in mathematics can be useful sometimes.

<comment><USER18> > Most humans are capable of using context to distinguish usage. Operator > overloading in programming languages and in mathematics can be useful > sometimes.

No doubt about it! But the difference as I see it, and what the OP is complaining about, is that in domain specific programming languages it's always possible to find a definition for the notation (an overloaded operator is defined somewhere, and so on); whereas in mathematics the only real definition is in the head of a mathematician.

I have to agree with the OP, that sucks. :(

</comment></comment><comment><USER42> If you're doing math, you need to be able to manipulate the symbols easily. These notations develop because they're easy to work with: consistency is less important than brevity. Lambda calculus terms may be easier to read, but they're much slower to write, and and they take up more space on the page or blackboard.

That said, once you've arrived at some kind of result, you could switch to a more consistent notation for explaining whatever you've found. It doesn't necessarily have to be textual, either (see [http://worrydream.com/KillMath/](http://worrydream.com/KillMath/)).

</comment><comment><USER43> I just thought.. It would be great to have a website where mathematical formulas are expressed as pseudocode.

</comment><comment><USER44> >Two, wikipedia refers to E(X) and E(Y) as the means, not the expected value. This gets even more confusing because, at the beginning of the Wikipedia article, it used brackets (E[X]), and now it's using parenthesis (E(X)). Is that the same value? Is it something completely different? Calling it the mean would be confusing because the average of a given data set isn't necessarily the same as finding what the average expected value of a probability distribution is, which is why we call it the expected value. But naturally, I quickly discovered that yes, the mean and the average and the expected value are all exactly the same thing! Also, I still don't know why Wikipedia suddenly switched to E(X) instead of E[X] because it stills means the exact same goddamn thing.

IIRC, the mean is the particular case of the expected value where the transformation function is the identity function.

The general expression of the expected value, where f(x) is the probability density function and g(x) is the transformation function, is:

E[g(X)] = \int{g(x) * f(x) * dx}

Let g be the identity function (g(x) = x), then E[g(X)] is the mean.

For example, let's say that you bet on a throw of dice such than you win 2$ if the result is odd, lose 3$ if the result is 2, and win or lose nothing otherwise. Here, the event X is the throw of dice: you have 6 possible outcomes. Your transformation function is the gain you get for each outcome, therefore g(x) is defined by:

1 -> +2

2 -> -3

3 -> +2

4 -> 0

5 -> +2

6 -> 0

Then, the expected value E[g(X)] can be calculated by summing all the g(x) multiplied by the probability p(x) for all x (all outcomes).

The first point of the article, in my opinion, is more about statistics than math in general, and I believe people find it weird because of the confusion between X and x, the former being a random variable associated with a distribution function, the ater being a value in the domain of X.

The second point of the article is just ease of notation. The derivative of a function doesn't exist; a derivative is always made with respect to a variable (df/dx), but if a function has only one variable, then the derivative of the function is defined as the derivative of the function with respect to the one and only variable and we don't need to write this only variable (f'(x)).

You could always write the variables of a function (df(x, y, z)\dy instead of df/dy), but that's just a waste of time, specially when you have to write it for every line of the demonstration.

</comment><comment> daniel-levin The problem here is _not_ the notation. Mathematical notation is not perfect, and can sometimes be confusing. Let me say this in a minimally offensive manner, without being obfuscatory: the author of this piece does not understand the mathematics underpinning the notation he is using. The root cause seems to be the use of probability theory in a cookbook manner. It can hardly be surprising that confusion results.

The first example is a formula. An instance of magic, in the sense that you use it to compute, without knowing what it does. The $x_i$'s are not quantified. What are they? Are they real numbers? Matrices? Elements of some semi-group? How can you expect to understand the "formula" if the summand is not explained? At best, I can say that it is a formal sum of _something_. We can forget discussing convergence or it being well-defined. You can cook up arbitrarily 'nice' notation. It won't help. This notation is absolutely fine for someone who can infer that the support of the distribution of X is some denumerable set {x_i}, equipped with p.m.f. p.

A suitable definition of the expected value (as an operator) would have cleared up all the confusing with the variance and E[X^2] vs (E[X])^2. This confusion is not the notation's fault. It is the user's fault for not knowing what E[f(x)] means (for some appropriate meaning of the symbol f).

>> Only the first xixi is squared. p(xi)p(xi) isn't, because it doesn't make any sense in the first place. It should really be just PXiPXi or something, because it's a discrete value, not a function!

Functions _are not_ algebraic expressions by which we associate one real number with another. In fact, we call p(x_i) the _probability mass function_. It seems to be a common flaw in many undergrad programs. Formulas and functions are never made distinct. The vast majority of functions f : R -> R do not admit an expression in a formula.

The example with the different notation for "derivatives" is a good non- example. The so-called Leibniz notation is used because it allows people to make statements with differential forms, without needing to invoke exterior algebra. If this is done correctly, statements such as "dy = f'(x)dx" can be made fully rigorous, if need be. Students are told that dy/dx is not a fraction, and yet it is used exactly as though it were. This confuses people - because they don't know what is going on. The dot-notation for derivatives is extremely useful in classical mechanics.

Notation is a clutch for succinct and meaningful writing amongst the initiated. One cannot expect to be able to use these tools without knowing what is going on, or by suspending a great deal of questions.

>> There must be other ways we can explain math without having to explain the extraordinarily dense, outdated notation that we use.

My final gripe with this post. We typically use clean and modern notation. It could be so much worse! Also, if we didn't re-use symbols, then we would run out, very quickly. Mathematics exists independently of the symbols we use to communicate it.

</comment><comment><USER45> when you post this on facebook your account will be blocked and you're forced to download anti-malware from kaspersky. outlier detection at its worst

</comment><comment><USER46> Seems like you are talking more about statistal notation than mathematical notation. Imo the topic is a tad off.

</comment><comment><USER46> Seem like you are talking more about statistical notation than mathematical notation. Please correct me if I'm wrong, I just think the topic is a tad off.

</comment><comment><USER37> Real maths is done either in books or papers, where the authors explain every bit of notation they will use. This is not the case in online resources, which is indeed a bad practice... But hey, don't blame maths for that.

And regarding the "understanding maths in terms of computer programs", sure that's possible to do with _some_ topics, but you just can't expect a computer to represent _every_ concept you'd like.

<comment><USER18> Show me a paper that explains "every bit of notation they will use"! ;P

(I understand there's a difference between "explaining" and "stringently defining", but I can't help thinking of the only book I know that actually tried to stringently define all notation: Principia Mathematica. If I remember correctly it took Bertrand Russel about 160 pages to define addition and prove that 1 + 1 = 2. :P)</comment></comment>


Fantasy Math Is Helping Companies Spin Losses into Profits - <AUTHOR> http://www.nytimes.com/2016/04/24/business/fantasy-math-is-helping-companies-spin-losses-into-profits.html <comment><USER3> As usual, Matt Levine offers some insight into the issue, which I tend to agree with. He offers the following three scenarios:

1\. GAAP, which is a man-made set of social conventions for how to present financial results, does not accurately reflect Company X's economic reality and continuing future earnings power, while the pro forma results do. (Or, less strongly, GAAP is informative, but the pro forma numbers are also informative, about a different aspect of the company's situation.) Investors know that it is a useful discipline to hold all companies to the GAAP social convention, but appreciate Company X's efforts to provide them with more insight into its real economic position, and use the non-GAAP numbers to inform their own models.

2\. The GAAP numbers are more or less right, the non-GAAP numbers are just fake and flattering, but investors, whose job it is to make intelligent decisions about the future earnings power of the company, ignore the non-GAAP numbers and focus on the GAAP numbers, which are after all reported prominently in the same press release.

3\. The non-GAAP numbers are fake and flattering and all the investors are chumps who believe whatever management puts in the big font at the top of the press release.

Pretty much every discussion of non-GAAP accounting focuses exclusively on Possibility No. 3, which, as both an efficient-markets fundamentalist and an accounting post-modernist, I find by far the least plausible of the three possibilities. Anyway, here's a column by Gretchen Morgenson with the pleasingly archetypal title "Fantasy Math Is Helping Companies Spin Losses Into Profits."

[http://www.bloombergview.com/articles/2016-04-25/investing-r...](http://www.bloombergview.com/articles/2016-04-25/investing- robots-and-goldman-deposits)

<comment><USER4> There's a fourth possibility:

4\. Companies increasingly occupy Extremistan, where a large portion of their financial performance comes from one-off, Black Swan events. Both the GAAP and non-GAAP numbers are true but useless; the future cash flows of the company depend upon unforeseeable events in the future.

The description that the article gives of the non-GAAP results supports this. Take, for example, a lawsuit against the company that results in a $5B judgment, payable out over many years to survivors of an environmental disaster. GAAP results include this lawsuit, non-GAAP results exclude it. Which more closely represents the future financial performance of the company, from the POV of a long-term value investor? Well, that depends whether there will be future lawsuits like this one. It depends whether the verdict will be reversed on appeal. It depends how many survivors survive.

The same goes for things like severance pay and patent lawsuits. Increasingly, it also applies to "normal" business, things like product introductions and the price of oil.

In Zero to One, Peter Thiel mentions (and decries) that an increasingly large portion of America is adopting an "indefinite" worldview, where the future cannot be known and it's futile to try to predict it. I'm not sure folks really understand the potential implications of this shift. Does "investing" have any meaning when the assumption is that returns will be dictated by large, random events? Does "meaning" have any meaning? What does it even mean to be rational, when reason is a tool we use to _predict_ and our assumption is that events are unpredictable?

<comment><USER5> Treating environmental disasters as 'random' events is too kind. I think in just about every major recent environmental disaster you can without too much difficulty, trace back the disaster to cost cutting measures where decisions were made to put off long term risks in favor of short term profits.

The BP oil spill, shortcuts were made in the safety of the drilling equipment emergency cutoffs, in the Los Angeles methane leak, the company had put off maintenance to try to make rate payers pay for improvements instead of out of profits to the company. The Northern California San Bruno pipe explosion - safety funds had been diverted to executive bonuses.

Smart investors (and insurers of these companies) should be digging into long term risks. It is not that we cannot predict it - we are too cheap and profit oriented to pay to mitigate it.

<comment><USER6> If losses can be socialized (which they indeed can, if you're big enough), it's smart (albeit sociopathic) not to bother mitigating risks. It's much cheaper to PR your way out of disasters than to actually prevent them from happening.

<comment><USER5> Though sometimes it seems like it's executives reaping short term gain while the company itself pays the long term cost at a later point after the execs have moved on.

</comment></comment></comment></comment></comment><comment><USER7> Proforma results aren't necessarily bad, they are the company trying to show themselves in the best possible light. Historically they were used to show how the company was doing ex of one time events( almost exclusively negative events) such as layoffs, lawsuit settlements, divesting/closing money loosing units, etc.

The biggest issue I see is that often the company will clearly spend more time with their proforma results than their GAAP results.

The outcome from this is that often when analyst or data companies try to put together metrics on a company they'll use GAAP results but if a ratio they want isn't present they'll substitute the ratio from the proforma results.

This means many of the data you get on google finance or even Bloomberg is an amalgamation of the two, which leads to garbage in-garbage out.

Side note: if you can clean data, you'll have a job for life!!!

Tech companies tend to be big users of pro forma results. Facebook famously turned a $700 million loss (GAAP) in 2012 into a $400 profit (Pro forma) by not using Black Scholes to calculate the cost of employee stock options.

Groupon was another poster child for pushing pro forma results vs GAAP results and that turned out about as well as you'd expect. Just google "Groupon pro forma vs GAAP".

<comment><USER8> Wrapping lies in a name like "pro forma" and calling it legit is still a lie.

It boggles _my_ mind that this is written off as acceptable, just another way of looking at the results. I own a business. I understand its accounting. Turning a $700m loss into a $400m profit is a $1.1b lie.

Edit: if you'd like to put recurring profits and expenses on a sheet and show it to me, fine. But if you omit one-off expenses when representing your financial position (and let's be honest, there are always one-offs) you've fraudulently represented yourself.

<comment><USER9> Accounting is not a world of absolute truth like that, because no-one really knows what next year's cash flow will be. There is plenty of scope for opinion. Valuing your employee stock options according to Black Scholes is one possible model, not the absolute truth, and valuing them according to their face value is not a lie.

</comment></comment></comment><comment><USER10> There are two main "users" of financial statements: the companies that produce them and the investors/analysts that consume them.

The problem is 15-17 years ago, the income statement got "political" and congress / nasd/finra/ accounting standards boards started inserting accounting lines in the income statement that _neither_ the companies or the analysts wanted. Cost of stock compensation being the primary one.

Look, when an investor looks at the numbers they want to dig down to the core operations economics and the health there of to create his valuation.

The investor/analyst isn't going to blindly say "oh they have negative GAAP Net Income ergo company value = 0"

<comment><USER11> I have been an investor for decades. Of course I want stock compensation treated as a cost when companies report earnings. It is especially crazy when companies trumpet their billions spent buying stock at the same time they want to treat stock giveaways as not a cost.

You might think just avoid in investing in companies that are so crazy as to do that (in their promoted non-GAAP numbers) because that must be a sign they are not so bright and why rely on them to make wise investing decisions for your company. But you would find yourself ruling out many technology companies. It isn't that they don't know this is wrong, they just realize it is in their executives (CFO, CEO etc.) interests to promote the false earnings because many people will accept it.

My blog post from last week

      http://investing.curiouscatblog.net/2016/04/21/buybacks-giveaways-to-executives-and-non-gaap-earnings/

<comment><USER10> fully diluted eps?

<comment><USER12> How do you think they help? Imagine a company with 1mn shares trading at $100, with $5mn earnings (ignoring taxes for simpliciy), i.e. $5 per share. Let's say they can reduce cash compensation to employees by $5mn giving instead $10mn in stock (0.1mn new shares). GAAP earnings are now $0 per share. Fully- diluted earnings (excluding stock based compensation) are $9.1 per share.

</comment></comment></comment></comment><comment><USER13> All those one offs sound like technical debt that businesses are borrowing on. For example:

\-- environmental disasters are the result of under investment in preventing environmental disasters.

\-- security breaches are the result of under investment in security.

\-- restructuring is the result of under investment in continually adapting the organization to a changing reality

\-- layoffs are often the result of under investment in hiring to make sure you don't hire bad performers and under investment in cleaning out poor performers continuously. The only layoffs that aren't like technical debt are those caused by external forces like a recession.

There is nothing wrong with under investing over time and then paying the piper when the time comes, but any one off expense that could have been prevented if things had been managed differently should not be excludable.

The litmus test should be along the lines of asking, "Is this cost our fault?"...

<comment><USER14> I can agree with the first two. But layoffs are more often the result of incompetent management failing to find a profitable use for the existing workers.

Or sometimes they're caused by management playing the "Let's cut costs to increase returns so we earn more from our shares" game.

Big layoffs are a management failure, not a hiring failure. Realistically, how likely is it that a company that's been running profitably for years suddenly discovers that thousands or tens of thousands of staff were a poor hire?

</comment></comment><comment><USER15> My confusion is why would investors fall for this? I understand why a company would put out these massaged numbers, but why would an investor use that to make their investment decisions? It sounds like the companies are putting out both GAAP numbers and their own numbers... why would an investor not just look at the GAAP numbers? It would seem in their financial best interest to not fall for the ploy.

<comment><USER16> Like most dangerous situations, they begin with a nugget of truth. In this case, GAAP has many limitations / shortcomings, and has been patched up piecemeal over the decades, leading to some oddities.

Tech companies in particular are annoyed by accounting methods developed for completely different types of businesses and are often frustrated that net earnings, for example, doesn't accurately reflect their situation.

However, combine that nugget with investor's willingness to be swooned by the latest growth company, and said company's desire to hit wall street growth targets and you get a dangerous combination.

</comment></comment><comment><USER17> The (pro-forma) beatings will continue until investors demand dividends.

Owners, sharing the profits of the businesses they own, rather than making a levered bet on central bank money printing.

Crazy, I know.

<comment><USER18> Dividends are taxed as ordinary income, which for a high income person means that they lose 25 cents on the dollar or more compared to the company retaining the value and selling their investment.

<comment><USER17> Yep. We should fix that.

I vote we make dividends deductible for the corporation, and treat capital gains as income, since it is.

<comment><USER18> Cap gains is genuinely different from earned income in that you have to risk your capital to get it, and you have to risk your capital in a way that at least on some margin has social benefits.

Like, if I invest $10k for a year in the hopes of getting 6% return, that's a thing! I could've gone on a really swank vacation for that $10k, or I could've bought a really nice TV or whatever. Instead, I took that $10k and I said, okay, maybe this will give me $600. Or maybe I'll lose $1k instead.

But let's say it pays off, and I get $600. But it's taxed. If it's taxed at 20% (current cap gains), I get $480. If it's taxed at ordinary income (and my income is high), I get $360.

That's not _irrelevant_. I might pretty reasonably say "Man, in order to get a chance at $360, I'm tying up $10k for a year? And maybe I lose some of the $10k instead?"

And it's particularly relevant if this belief that cap gains should be taxed as ordinary income is paired with a belief that the top marginal tax rate for ordinary income should be higher than it is.

We've seen, all over the place, recently, that the financial sector responds to incentives. When it becomes hard to generate a return through traditional means, the financial industry chases returns no matter what. Sometimes the consequences of that are kind of scary. Now, if someone understands all that and has a considered opinion that none the less capital gains should be taxed as ordinary income, well, okay. But I've never actually seen anyone tackle all that. Instead, it's always one pithy sentence like "it should be treated as income, since it is."

<comment><USER17> I don't agree that there is a difference, at least from a taxation standpoint. I see no reason why someone who made a million dollars trading stocks (or selling homes) should be taxed differently than someone who made it performing open heart surgery.

There isn't some magical ethical category open to capital. I risk my life commuting to work to perform labor. What of it?

In any event, even if I can't convince you that there shouldn't be a distinction between income and capital gains, I hope I can convince you that there shouldn't be a taxation difference between dividends and capital gains. We need to make the way company ownership works much more like an LLC, where profits flow through to owners by percentage of ownership. Capital gains are easily manipulated with creative accounting, the madness of crowds, central bank money printing and, most significantly, leverage fluctuations. If anything, I would want tax capital gains _more_ heavily than dividends, which do not lie.

A steady return of profits to owners would enforce the discipline our corporations so desperately need. Wall Street, of course, doesn't want that, and neither do most boards, because it would force them to give up cash that they would rather use for bonuses and stock grants. And that would be great.

<comment><USER18> We entirely agree that the difference in taxation between dividends and cap gains is ridiculous -- especially since you can "time" cap gains and get a tax advantage from that. Why privilege cap gains _more_ than that, compared to dividends?

</comment></comment></comment></comment></comment></comment><comment><USER19> Another interpretation of the same data is that GAAP is so bad at representing a company's operations that both investors and firms choose to not make decisions off the statements. I don't know of any company who, internally, lives and dies by GAAP reporting. Sophisticated investors know this.

<comment><USER20> Is there another standard model that is better at representing the company (either from a company or investors perspective)?

<comment><USER21> EBITDA - earnings before interest, taxes, depreciation, and amortization - <USER2> often used for companies that don't have large pieces of equipment that wear out.

[http://www.investopedia.com/terms/e/ebitda.asp](http://www.investopedia.com/terms/e/ebitda.asp)

<comment><USER22> You still need to go through GAAP (or some other ruleset) to figure out what goes into the E I T D and A of the EBITDA.

</comment></comment></comment></comment><comment><USER21> This seems like a non-story.

Lets say a company buys another company for its SAAS product, customers and revenue. GAAP rules state that anything paid above "book value" for the company must be called "good will" and be depreciated. This might have made sense in a world where the value of a company was the equipment it owned and the value in a brand name but doesn't make as much sense for a SAAS company. That is why companies are often valued on "EBITDA" \- earnings before interest, taxes, depreciation, and amortization

<comment><USER12> > GAAP rules state that anything paid above "book value" for the company must > be called "good will" and be depreciated.

Goodwill is not subject to amortization since 2001 (depreciation is the term for tangible assets, amortization for intangible assets). It has to be tested for impairment, though. For example, HP bought Autonomy for $11.1bn in 2011 and took an impairment charge of $8.8bn in 2012 (the goodwill and a good chunk of the book value as well).

</comment></comment><comment><USER23> For some reason, I first read this as "Fantasy Math" being the name of a new startup that helps companies spin losses into profits as a service. Maybe it's "creative resourceful accounting as a service" otherwise known as CRAAS.

</comment><comment> Sam</comment><comment>-- Two thoughts on why this is not such a big deal...

1\. SEC rules require GAAP results to be presented with equal prominence to non-GAAP metrics. This is why reports usually have "Core" and "As Reported" metrics.

2\. Starting mid 2014 to early 2105 we saw a large increase in the value of the dollar relative to other currencies. GAAP accounting requires that currency hedges be marked to market with fluctuations in non-realized gains/losses. This creates a lot of noise, hence the increase in non-GAAP reports.

</comment><comment><USER24> Yes. And journalists cooperate by publicizing non-GAAP figures. My general position, having run Downside.com, is that you're only a "growth" company for a short period, three years at most after you have a product. After that, you better have good GAAP numbers.

When was the last time you saw an "extraordinary item" in a footnote that was excluded from making the earnings look better? Have you ever seen one?

EBDITA is called "earnings before all the bad stuff" by value-oriented analysts.

</comment><comment><USER25> This seems like a good thing to me.

We should be using these fantasy math innovations to help the poor. There is a lot of fantasy profit that could really help people.

Some of the presidential candidates have actually good proposals about this idea.

</comment><comment><USER26> I'm an accounting student in my fourth year, so I thought I could lend some of my insight as to why I think this is a bad article. The __tl;dr __of it is that this article contains almost no content other than a lament that financial statements are "fantasy" without ever explaining what she means by that.

First, all publicly traded companies are legally required to disclose financial statements that have been prepared according to GAAP and audited by an outside firm who ensures the financial statements are a "faithful representation" of the firm's financial position. Companies are also legally prohibited from suggesting that GAAP numbers are somehow insufficient or don't count in their official financial statements. This system is not perfect - Arthur Anderson had certified Enron's financials and it is known that the need to get continued business as well as form relationships with the companies' can mean that they don't always get the level of pushback that they should from audit firms. Additionally, traditional audit methods aren't really meant to detect outright fraud.

The claim that 90% of financial statements were prepared under some method other than GAAP is absurd and the link the author provides does not actually lead to an analysis for that number.

Accountants prepare financial statements for the benefit of investors and the rules and principles that form GAAP take into account people's willingness to abuse them, selectively apply them, and otherwise subvert them. There's also a great deal of genuine ambiguity where two reasonable people can look at the same situation and disagree as to the proper accounting treatment. None the less, any investor who would ignore those numbers in favor of some fictitious, back-of-the-envelope calculation in the Management Discussion & Analysis is a fool.

However, GAAP also _requires_ that you discuss your company's financial situation, your strategy, your risks and special considerations _beyond_ what is just in the book-keeping calculations. A typical financial statement has more notes and text to it than it does actual tables of accounts and balances. This is necessary because whereas accountants prepare their financial statements for the benefit of outside investors, we try to be as objective as we can and let the debt and equity holders be the ones to actually assess and estimate the meaning behind those numbers according to their own economic theories and financial needs.

So what exactly is the problem then? The author briefly gives three reasons that financial statements may not be as faithful as we'd like, but describes none of them in detail: restructuring and acquisition costs, stock-based compensation and write-downs of impaired assets.

First is the most obvious one, a write down of an asset due to impairment _is_ an expense. As for executive compensation, that used to be a bigger problem than it was, but the accounting rules were changed to address that and we've seen a massive decrease in fishy compensation deals. There could well be issues about compensation that are emerging, but I don't happen to know about them and the author doesn't bother to mention them. Finally, there's restructuring and acquisition costs. Thankfully, this portion does get a one or two line explanation, but I don't see what this has to do with "hidden expense." The author says that future costs of restructuring are not recorded in the balance sheet. If you did, then you'd record the future cost as a liability and you'd match the expense with the actual work of restructuring. The expense would be the same in either case, but you'd have a liability on your books earlier. Except that you're not actually obligated to continue to spend money on restructuring, so there's no reason to accrue that cost anyway. This is a perfect use-case for a note, with an estimate about how much the company is planning on spending (given the article, the author would probably lament it as a non-GAAP fantasy number anyway).

The way accounting is done is not without it's problems, but the author doesn't seem to have anything intelligent to say about those problems.

</comment><comment><USER27> Given the nature of Cruz, Trump and especially Clinton, we can only expect even more allowance of fake accounting data in the future. Wouldn't surprise me if the SEC was simply closed.

<comment><USER28> Really? It seems politicians want to increase "oversight" and stop scary- sounding, misunderstood, tech like HFT. Seems like the SEC is the place to do that.

</comment></comment><comment><USER29> Are you sure this isn't just hiding profits for tax purposes?

<comment><USER16> Statements required by the SEC are not the same as those sent to the IRS.

For example, a company can use straight-line depreciation in their GAAP statements, but use accelerated depreciation for tax purposes. The difference becomes a tax credit on the balance sheet.

The IRS is much less likely to fall for shenanigans than investors.

</comment></comment><comment><USER30> It's all about the users man. It doesn't matter if you're profitable, as long as the number of users is growing! It's all about revenue growth! You can always hack the expenses later. Profit is so 90's.</comment>


Open office doesn't print on Tuesdays - <AUTHOR> https://bugs.launchpad.net/ubuntu/+source/cupsys/+bug/255161/comments/28 <comment><USER2> I've seen this story before. It was a fun read and there are a few others on this site as well.

[https://dbrgn.ch/stories-from-the-internet.html](https://dbrgn.ch/stories- from-the-internet.html)</comment>


A complete list of things caused by global warming - <AUTHOR> http://www.numberwatch.co.uk/warmlist.htm

<comment><USER2> My favorite example of this is Katrina. It wasn't a hugely powerful storm like say Andrew (it was only a Category 3 at landfall), it just happened to hit at exactly the wrong spot. People have been talking about this happening since before I was born, so it shouldn't have been a huge shock when it finally did. Despite this, and despite the fact that we have had a string of mild hurricane seasons since then, Katrina is often pointed to as an example of the kind of worse-than-usual storms we can expect in the future.

<comment><USER3> Uh... Katrina _was_ a "worse-than-usual" storm, by pretty much every metric. Not the biggest (though the cat-3-at-landfall was because of a luckily-timed eyewall cycle, it was absolutely a cat-5 storm), but certainly one of the most memorable. So what's wrong with using a memorable storm as an example of similar storms?

<comment><USER4> Nothing is wrong with it except that most of the damage was caused by the genius idea of building below sea/water level in an area known to be inundated with hurricanes which tend to cause increases in sea level and then neglecting to maintain the levies to keep the water out. It surely wasn't individuals and various levels gov't making cataclysmically bad decisions, no sirree, it was global warming. Also, the gov't should have had more boats on hand for actors to rescue puppies.

<comment><USER5> Nothing is wrong with it except that most of the damage was caused by the genius idea of adding gases to the atmosphere that basic physics tell us trap heat, in a world where people love to live in low-lying areas next to bodies of water, and then neglecting to worry about any curbs on this massive experiment in 'what happens next?'

<comment><USER4> The sea level used to be 300 feet lower than where it is today. The planet changes, deal with it. Why is whatever the temperature was in 1700 the ideal temperature? If we have the power to change the temperature of the earth we should be thinking what the ideal temperature we'd like it to be is and do that instead of picking the day we started burning coal.

</comment></comment></comment></comment></comment><comment><USER6> This is valueless and trollish. It proves nothing other than that uninformed people who've made up their mind in the absence of logic exist on both sides of the debate, which you already knew.

<comment><AUTHOR> As I said, I was pressed for time, but the first few links I clicked on all had "research", "study", "survey", or "report" in the body text. That's not just somebody's opinion. Usually with nouns like this there is funding and somebody somewhat professional behind it.

But if it's just rampant speculation by uninformed people I apologize. I certainly didn't mean to spam the board. Care to prove your point that somehow all of these reports, surveys, studies, and findings are bogus? Or is this just a way not to deal with the overwhelming amount of research with unusual conclusions that somehow links into climate change?

By the way, my guess is that this is a conservative list, created for impact. The actual list of suspicious links and conclusions is probably much more boring -- and much more extensive. This is just the tip of the iceberg.

But I'm happy to be proven wrong.

<comment><USER7> The title you chose is "complete list", but your guess is "conservative list". I suspect the difference between your guess and the H1 you chose is caused by global warming. Perhaps.

I clicked on a few links - two were 404's, one said that it wasn't caused by GW but was exacerbated by it (ozone repair slowed), one was speculation about shark attacks by a shark expert. One said that nuclear power would probably increase due to global warming. One said that New Zealand would have many fewer melanoma deaths due to GW. The one about jet engines seemed to have nothing to do with GW.

It's a good list and a good point. Global warming turned me into a newt. However, IMHO, there is a kernel of truth in there somewhere.

Edit: Newt reference for those who may not have experienced it: <http://www.youtube.com/watch?v=fr8DIg3oHFI>

<comment><AUTHOR> For somebody so busy? Here I am commenting for hours on HN. Dang, this site is addictive. (sigh) Should have just blogged.

Yes. I mistook the H1 for the title. I assure you it was an honest mistake.

I also agree with you that there is truth in there. I further agree that the more we work towards a nuclear/green electric future with zero emissions the more enjoyable everything will be, and I support that overall strategy with some caveats. I'm just a process guy at heart, though, and for a couple of years the debate on GW has struck me as being badly broken. I think this is an ominous sign for both politics and science. I hope the current debacle can help reasonable people come up with standards, ethical guidelines, and certification programs that will prevent this mess from happening again. I am doubtful, though. I think climate science has gotten so political that there is going to have to be a severe thrashing taken by one side before the sufficient changes are taken. What can I say? Hopefully I'm very wrong about this.

</comment></comment></comment></comment><comment><USER8> From the site's homepage:

      Welcome to Number Watch

      All about the scares, scams, junk, panics, and flummery
      cooked up by the media, politicians, bureaucrats,
      so-called scientists and others who try to confuse you
      with wrong numbers.

      Working to combat Math Hysteria.

It basically looks like an extensive list of news articles about varied topics that make mention of global warming (it being the fad-du-jour in journalism and all)

</comment><comment><USER9> Um. You do realise that this is how science works? People come up with theories, and then they're discussed. Discussed, not used as a political cudgel.

The people to blame aren't the scientists but the press who take "x may be related to y" and turn it into "X CAUSES Y!".

<comment><USER10> One of my favorite takes on this:

<http://www.phdcomics.com/comics.php?f=1174>

</comment></comment><comment><AUTHOR> I've been meaning to blog about this for some time -- AGCC has reached the point where it is included in just about any other piece of research, no matter how tangential -- but haven't had the time. This site just throws the data out there for your perusal.

Cato the Elder had the habit, no matter what the topic, to include the phrase in his speeches "And Carthage must be destroyed" -- Carthago delenda est

No matter what came up, he always added "Carthago delenda est" The farmers have had a good harvest this year, and Carthage must be destroyed. I am very happy to receive this honor, and Carthage must be destroyed. Nice toga you're wearing, and Carthage must be destroyed.

I think this list stands on it's own. No matter what the topic, climate change is presented as a big factor. It's become the universal plug-and-play prime mover. This is especially interesting in the context of no statistically significant global warming in the last decade or two. Of course, all generalizations are false, change doesn't necessarily mean warming, micro- climate is not the same as macro-climate, etc, etc. But you get the point.

If the list isn't enough to make the rhetorical point well, perhaps somebody with more time than I have can write it up in a good essay. I know I'd like to read it.

Link: <http://en.wikipedia.org/wiki/Carthago_delenda_est>

<comment><USER10> "There might be dramatic changes in our global climate in the future."

"Pfft. Crazy talk. The Earth has always been exactly as it is now."

"We might be contributing to these changes because of our polluting ways."

"No we aren't. It's too big. There's no way that 6 billion people could have any effect on the Earth's climate."

"We think we have some evidence. Look..."

"HAH! Look, here, see? Your numbers don't all match! You're a fraud! You just want money to continue your prestigious work!"

"Uhm ... sure. But look, the climate affects a lot of things, y'know."

"Yeah, so?"

"So, here's a partial list of things which might be affected by climate."

"LOLOL! There's no way one thing could be blamed for all of these! No way! That just proves you're a crock!"

...But, uhm, hey, thanks for contributing to the debate, or something.

<comment><USER11> _"Pfft. Crazy talk. The Earth has always been exactly as it is now."_

One of the main claims of climate skeptics like myself is that the earth _has always been changing_ , and that temperature changes seen recently are largely a result of these natural (mostly solar) cycles. This would explain why Mars was also heating up for a while.

You need to get another set of straw men.

</comment></comment></comment><comment><USER12> I am actually really looking forward to reading Brignell's books. This particular page might only be an indicator of how out-of-control the global warming meme is, but I'm under the impression Brignell's stances are at least an approximation of how you should honestly approach the subject/studies.

Who's read him? (I actually think I was linked to numberwatch on HN)

</comment><comment><USER13> Not complete: it's missing itself.</comment>


Men, Please Brush Your Teeth - <AUTHOR> https://www.gq.com/story/brush-your-teeth-guys <comment><USER2> Is this really a thing? How do these people find partners?</comment>


How do you attract smart people to work at your startup? - <AUTHOR>

We're getting ready to hire our first employee. We've decided to go with an intern, because they are cheap, and if they turn out to be an idiot it's easy enough to get rid of them.
The bulk of the development will be done by me and my partner but we need someone to be our sidekick with respect to consulting work, and other jobs that take away from product design.
So how do you go about finding someone smart to work for you? what do you look for in a resume? what are some strategies for interviewing?
We have a number of ideas. Some conventional, some kind of crazy. But I'd be really interested in what you guys have come up with. <comment><USER2> Good question.

One of the things I do is ask potential employees to HONESTLY list several specific things they DISLIKE and/or HATE about our business (either the business model or the actual implementation.) Every business has warts, so it shouldn't be too hard to find some. If the business in question is a complete startup or is in 'stealth mode', I ask them to list things they dislike about the general industry we're operating in.

I want to hire employees that are honest and will work to improve our business. Asking this question helps me screen for brown-nosers, it leads to the obvious follow-up question of how they would change things to improve them, and it also really gives me an insight into how they think. It also shows me how much research they've done and how much industry knowledge they have. I've actually created new positions for people based on their answers to this question...it can be really enlightening. You just have to be genuine in wanting to hear their answers and you have to have a thick skin.

<comment><USER3> Wow, great answer. I didn't really understand where you were coming from in that "how do I spend my money" thread, but this post shows how it came about. I wanted to suggest in that thread that maybe you should use your greatest asset--the knowhow about creating startups--to help others prepare their YCombinator application or similar activity. By helping young people create startups (or make their YCombinator application as good as it can be) you will help create jobs and solutions to save everybody time and money, or socialize better, or entertain everybody with better and better startups.

<comment><USER2> RE: [I didn't really understand where you were coming from in that "how do I spend my money" thread...]

At the risk of hijacking this thread, I made that "Are you going to change the world" post after being up for 28 hours. I rambled too much and I see how easy it was to lose the trail. I actually only had a very brief, passing thought about going to medical school which I quickly discounted, for example, yet some people thought that was the core issue of my post. I also have zero interest in DONATING my money to charity at this point, yet some people thought that was a core issue of my post. Medical research and charity were red herrings for some people who read the post. I'm interested in social entrepreneurship, not charity. I also have tons of my own ideas and have no trouble spending my money (on business or pleasure)...but I'm always open to new ideas and opportunities, because I can only implement so many ideas myself. Interestingly, some people also thought I was having a huge identity crisis based on my post, which is not the case. I apparently injected too many specifics in the post...

Some people that commented on that thread actually helped me crystallize my thoughts better, though:

1\. "Software is powerful. Engineers are powerful." (via falsestprophet) To this I would add that youth and inexperience are also powerful. And they are also the people most likely to underestimate their power and their ability to change the world for the better.

2\. There are people changing the world with your skillset RIGHT NOW. To think that you can't do anything is a cop-out. (via altay, falsestprophet, Hexayurt, and others)

3\. "If you are not working on the most pressing issues in your field...why not?" "If you are not tacking the biggest problem you can tackle with your skillset, why not?" As someone pointed out, everything has an opportunity cost. The true CORE idea of my post was to prompt people to examine those opportunity costs and weigh whether they are working on something that will have the biggest positive impact, versus just working in a hot field (or on pedestrian ideas that they think they can flip for cash.) In sum, don't settle.

4\. Changing the world for the better doesn't have to involve curing cancer or saving the lives of African children. Again, I may have thrown out a red herring with the medical stuff. If you are saving people time and money, then that's great. But, even then, is it THE optimal solution?

Etc. Etc.

<comment><AUTHOR> How come you always apologize for your posts, when they are always so awesome? :)

I really enjoy reading what you have to say. Keep it up.

</comment></comment></comment></comment><comment><USER4> "We're getting ready to hire our first employee. We've decided to go with an intern, because they are cheap, and if they turn out to be an idiot it's easy enough to get rid of them."

How do you attract smart people to work at your startup? Not like that, I'm afraid.

<comment><AUTHOR> I can see how that may have come off as cynical. Let me clarify.

We are based in Waterloo, Ontario. We will be hiring an intern from the University of Waterloo. Waterloo has an all co-op engineering program (at the cost of having no time off for students, and a 5 year program.), so even if you're hiring a 2nd year intern the guy already has a year of experience at 3 different companies (not bullshit experience either, but serious engineering work at Google, Microsoft, nVidia etc.) So when I said interns were cheap I meant that we get a bargain for the level of experience the guy has.

When I say interns are easy to get rid of, I simply mean that the guy can seem downright brilliant in an interview, and have a solid resume, but turn out to be useless on the job. So it's nice to know that the worst cost you will incur is 4 months salary, and none of the paperwork associated with firing a full timer.

\</comment></comment><comment></comment><comment>--- Tangent \</comment><comment></comment><comment>---

Funny story. I was working at a software startup in Waterloo not too long ago and we were looking to hire. We got a bunch of resumes, and we were about to start interviews. One resume in particular was very impressive. The guy worked at Amazon, NVidia, and had just graduated from comp eng (very tough program to get into.) The guy who was going to do the interviewing thought there was something funny about this resume. He couldn't put his finger on it but something just wasn't right. Maybe it was that this guy with a very impressive resume was applying to a low level web development job. Anyway, so he decides to check this guy out. He googles the name, and he gets this: [http://www.lankanewspapers.com/news%5C2006%5C8%5C8255_image_...](http://www.lankanewspapers.com/news%5C2006%5C8%5C8255_image_headline.html) Suresh Sriskandarajah. The guy was on trial for smuggling weapons for the Tamil Tigers terrorist group in Sri Lanka. That's not all, this guy's court appearance date was set for 10 days after he sent in the resume. I'm not sure what the hell he was thinking he was going to do if we hired him. "ummmm, sorry guys I'm going to have to take sick leave for the next 5-10 years"

<comment><USER5> I'm a student who will soon (spring/summer) be looking for an internship with a start-up, so I was reading this from the other point of view trying to figure out how start-ups recruit so I would know where to look. As it turns out, I am in Waterloo as well.

I've been wondering for a while how much of a disadvantage I am in terms of getting an internship like this because I am not in the co-op program (besides advice and employment courses), as an employer do you give this much thought? (sorry to go off topic; I have talked to students about this but I figured I should jump at the chance to ask an actual employer.)

By the way, any chance you will be at BarCamp?

<comment><AUTHOR> Are you at a disadvantage by not being in co-op? Yes, definitely. Get in co- op. Seriously, it's really hard to overstate how valuable this is.

However, a lot of companies that post jobs at UW also post them online. RIM for example hires hundreds of students from UW every term and their entire application process is online so you're probably not at a disadvantage there. Microsoft has their recruiting sessions here every few days it seems, so just attend one of those and hand out your resume. Now that Google has a branch in town just attend one of their sessions too.

If you're specifically looking to work for a startup, your best bet is to look up companies in the Accelerator Center (north campus, in the Research and Technology park.) There are about 15 startups there now. Terrapath and SuitedMedia are on a hiring binge, so just walk in there and talk to the president, you'll probably have a job on the spot. Don't be afraid, the guys there are all only a few years older than you, so don't feel intimidated at the prospect of just coming in and talking to the boss :)

<comment><USER5> Thanks a lot for the response, I've asked a few people the same question but from an employer the response has a lot more weight. I likely will apply for co-op when the next opportunity comes around. Since you made it sound easy to get a job with some of the smaller/younger startups, I guess the benefit of coop is that the larger companies (RIM/MS/Google/etc.) will take me more seriously? My thinking was that if I choose not to reapply, I would leave my summers open if I felt like working on an open source project, or if I had an opportunity to do research, or get involved with a student start-up, or if I wanted to go home for a few months. I still have to wait a while before I can even apply to transfer, so I will see how things go before making my decision.

</comment></comment></comment></comment><comment><USER6> "We're getting ready to hire our first employee. We've decided to go with an intern, because they are cheap, and if they turn out to be an idiot it's easy enough to get rid of them."

i bet that person feels very loved right now.

</comment><comment><USER7> Speaking as a developer who joined a project started by a guy who had a great idea for a _business_ , the things I looked for was a really solid business plan, a good understanding of the problem domain, and a map that showed how we could get from here to there in 18 months. I might be more cynical than most, having gone through 3 dotcoms as a developer, but I'm also more optimistic than most (having earned less than 20k in the last year while we build this thing and I earn my pony, and the estate upon which to esconce it).

Don't sweat the code if that's not your strength: focus on your business plan. Most seasoned coders have seen umpteen 'cool ideas' burn and die, and it's usually not technical issues from which Demise doth spawn. The one freakish happenstance of the current market is that, while most coders are not great risk takers, they are wonderful risk-smellers.

Some background: the progenitor of my current gig spent the last 3 years trying to build a business. He tried to outsource, and contract, and everybody told him it couldn't be done. We met through a mutual business acquaintance, and I fairly scoured his plans. 3 months later, we had a working prototype, and we launch in 4th quarter 2007.

</comment><comment><USER8> This is a good question. One way to answer this is to think of what I would want from the startup experience:

1) A chance to work with great people. This is by far the most important thing. And since a startup typically has only a few people, the chances of one of them being 'not great' is pretty small, as there is no room to hide.

2) The idea has to be in an area that appeals to me (opportunity cost of working on something that isn't interesting should be considered).

3) The work environment - this goes back to 1) again. More clearly, working with smart people who you actually like hanging out with would be ideal.

Perks and stuff doesn't really matter. The salary should be competitive, but I wouldn't really care 10-20% either way if the above conditions were satisfied. But at such an early hire level, a good chunk of equity would be a must (perhaps not for an intern, but something to think of if/when you decide to bring them on full time).

</comment><comment><USER9> Good product (or idea). Good chunk of equity ( if you are offering a good salary but a petty stock options package, then you just going to get mediocre people that want a job). Let techincal people feel they will have a great impact on the company (and eliminate unecessary b.s.)

Whatever else you do, it doesn't matter. As the really good programmers will never apply for a job at your company. If your job offering is just that (a job offering and nothign more), then you will never attract the great programmers out there.

</comment><comment><USER10> Have them do the job during the interview. What better way could there be to find out if they are competent to do the work? Have a look at Nick Corcodilos's Reinventing the Interview: [http://www.amazon.com/gp/product/0452278015?ie=UTF8&tag=...](http://www.amazon.com/gp/product/0452278015?ie=UTF8&tag=wwwonebadseec-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0452278015)

</comment><comment><USER11> I suggest paying a few people for small tasks. You will find out that some people become really committed to the company, some people are really excited at first but turn out to be very flaky.

Have a long term hiring plan for finding excellent employees. In the interim, bring on interns/friends/outsource to India. Of course, this assumes you have some money to pay them.

Best of luck.

</comment><comment><USER12> Ask to see their work and then go with your gut feeling. Don't rely on arbitrary questions or other forms of measurement. When it comes to people, the proof is in the pudding and when you meet them, what your gut tells you.

I would have to imagine this is exactly how the YC application process works.</comment>


"Space Ball" drops on Namibia - <AUTHOR> http://www.google.com/hostednews/afp/article/ALeqM5jsNmCG-1OfkofGh9URvt1h_V-_8g?docId=CNG.6851377f0c77d5cfe1c2a1e06c165a21.411

<comment><AUTHOR> I can't find any further news on this, specifically the following is of interest:

"Several such balls have dropped in southern Africa, Australia and Latin America in the past twenty years, authorities found in an Internet search."

I haven't heard of this and have they identified what the origin of the other "several such balls" was?</comment>


How to Ship Without a Deadline - <AUTHOR> https://medium.com/@jazzychad/how-to-ship-without-a-deadline-b90905c3b3c7

<comment><USER2> If you're building iOS apps, you have no excuse to not test betas frequently.

iOS8 integrates with TestFlight, so even nontechnical users can easily try your beta apps. It takes seconds to send out beta releases to testers and there is no manual review process. "Normal" app release cycles are once-per- month, but that's incredibly slow for beta testing. I send a new beta release every 2 days and get immediate feedback.

</comment><comment><USER3> Alternately I would suggest user testing to #11. In the event you can't do some kind of private release to get early user feedback, or you want unbiased usability testing from people outside your company. Bring people in to play with your app, guide them through some tasks and see how they use it and what they think certain parts of the app do.

You don't even need to have a functioning build for this to work. Prototypes work too</comment>


The Russian government-funded TV network's hyperbolic campaign against US 5G - <AUTHOR> https://thebulletin.org/2019/05/the-russian-government-funded-tv-networks-hyperbolic-campaign-against-us-5g/ <comment><USER2> what's the end game? do they sell 4G/LTE tech? Or do they want to harm china exports because they are enemies fighting for siberian oil?

or is russia now doing things just for the fun of it?</comment>


Son – A minimal subset of JSON for machine-to-machine communication - <AUTHOR> https://github.com/seagreen/Son <comment><AUTHOR> Author here. I originally started this project because I wanted a consistent way to serialize JSON so that the serialized bytes would hash the same way every time.

As I worked on it though I realized it might be of general interested to people. Thus the example in the README of piping JSON through multiple tools without generating trivial changes that mess up diffs.

Most of the decisions I made were clear: no insignificant whitespace, object keys must be ordered, etc.

There are two things I'm still not sure about:

\+ Son doesn't provide escape sequences for any Unicode character that JSON allows to be written unescaped. This includes U+007f (ASCII "delete"). Will that cause a problem for many programs? All the other ASCII control characters are required to be escaped by JSON, U+007f is the only one left out.

\+ Son doesn't allow trailing zeros in fractions. This means you can't serialize `1.0`, you have to serialize it as `1`.

I was confident in the decision to take out scientific notation (it would be cool if JSON parsers actually treated numbers as being in scientific notation and tracked significant digits, but they don't so I feel like that ship has sailed). Trailing zeros are different though because some JSON generators do use them to distinguish integers from fractions. The problem is that many parsers don't care about them, so you end up in a situation where parsers are tossing out information about documents, meaning they can't serialize them faithfully again which is the whole point of Son.

<comment><USER2> instead of messing with JSON and making it less human friendly (arguably the thing that made JSON so popular in the first place), why not just use something designed for efficient machine-to-machine transfer?

Basically making JSON more machine friendly and stricter to parse undermines the original reason to use JSON. If efficiency and absolute correctness are important use something not designed to be forgiving to humans :)

<comment><USER3> >making it less human friendly (arguably the thing that made JSON so popular in the first place)

I would not call a JSON human friendly due to its lack for comments.

<comment><AUTHOR> You might be interested in JSON5 ([http://json5.org/](http://json5.org/)) which goes the opposite direction of Son and makes JSON more human-writeable. It's the best, cleanest "JSON+" I've found so far.

</comment></comment></comment></comment><comment><USER4> _" Object members must be sorted by ascending lexicographic order of their keys."_

How should the following be serialized?

{"öp":1, "op":0}

<comment><USER5> Couldn't you solve that by sorting by the underlying byte order? Since it is required to be UTF-8 that should be fast and unambiguous.

<comment><USER4> You could, and that's partially what prompted the question, but that's not quite what the specification says currently.

edit:

 _and unambiguous._

var x = "\u0307\u0323\u0073"

var y = "\u0073\u0323\u0307"

These are arguably the same grapheme when displayed on a screen, but they would be considered different keys in SON, and sorted in different spots. I'm actually unsure if most diffing systems would catch that they are different or not, and if so, how they would represent that difference to the end user (since just showing the grapheme would be useless as they are the same).

The specification is silent on normalization, so a SON pipe could output an object with those as keys (and still meet spec), but not be accepted by a conforming SON parser (that did unicode normalization on incoming keys). So really, the specification should say which of the canonical normalized forms to use, or that keys should specifically may not be normalized/modified in any way. This works fine if you're running something like JavaScript -> JavaScript -> JavaScript, but would fail if a (currently conforming) system in the middle defaults to normalized unicode representations. In other words, would a pipeline like Firefox -> Swift -> Python -> Swift -> Nodejs -> Swift -> Firefox, even if they had conforming SON implementations (of the current specification)?

<comment><AUTHOR> > not be accepted by a conforming SON parser (that did unicode normalization > on incoming keys)

I don't think RFC 7159 actually mentions Unicode normalization at all. If it was in there I think it would be mentioned in the section on string comparisons, but that just talks about going unescaped codepoint by unescaped codepoint: [https://tools.ietf.org/html/rfc7159#section-8.3](https://tools.ietf.org/html/rfc7159#section-8.3)

EDIT: Does Unicode normalization change over time? If so we definitely have to leave it out and just go codepoint by codepoint, because we don't want the validity of a Son document to change.

</comment></comment></comment></comment><comment><USER6> Cute name, but 1) it's totally un-Googleable, and 2) it doesn't mean anything.

<comment><AUTHOR> I wanted to name it something like "mson" for "minimal-JSON", but that's already taken.

EDIT: Not meaning anything is a plus! But I see your point about being un- googleable.

<comment><USER7> ASN.1 uses the name DER Distinguished Encoding Rules for this purpose.

There are some other edgecases that you aren't considering (or that I missed)

Min and Max integer values - JavaScript has some pretty tight limits here

Keys should be in lexicographic order — you might want to be more specific. Is there a permitted subset of Unicode? Which normalization rule must be used?

<comment><AUTHOR> There's an issue for min and max number values here: [https://github.com/seagreen/Son/issues/3](https://github.com/seagreen/Son/issues/3)

Son seems like a natural place to put restrictions on them, but I'm not sure if there's way to do it that (A) still makes for a clean spec and (B) still allows everything floats can encode to to be used.

<comment><USER7> On an unrelated note. If human readability isn't a primary concern, I'd recommend requiring that < > & all be escaped, this prevents some crappy attacks

Also, no top level lists!

<comment><AUTHOR> Why no top level lists?

<comment><USER7> Ha! I guess I'm showing my age. There used to be an associated vulnerability, which is why some frameworks won't let you do it. It appears that the vulnerability was fixed in what are now fairly old versions of browsers.

More info at [http://stackoverflow.com/questions/16289894/is-json- hijackin...](http://stackoverflow.com/questions/16289894/is-json-hijacking- still-an-issue-in-modern-browsers)

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Umm... why? The only rationale for this project I can see is this:

> Piping JSON through multiple programs creates lots of trivial changes, which > makes it hard to do things like take meaningful diffs.

But you can always put JSON through a pretty-printer which puts values into canonical form before diffing. I wouldn't bother turning it into a formal specification. And you mention 'No insignificant whitespace' in the README, so it's not like your format makes line-by-line diffs any clearer.

It's as if IT hasn't had enough solutions in search of a problem...

<comment><AUTHOR> > I wouldn't bother turning it into a formal specification.

Too late!

> But you can always put JSON through a pretty-printer which puts values into > canonical form before diffing.

Son is a starting point for building such a pretty printer. It takes care of messy details like eliminating the redundancies in string and number encoding, so all you have to do to specify the pretty-printer format is say where you want your newlines and how much to indent by.

<comment><USER9> > Son is a starting point for building such a pretty printer.

I don't understand: such pretty printers already exist (e.g. jq, which does a whole lot more [0]). If you're transmitting JSON and want to diff two documents, just pipe them into jq or another pretty-printer with key ordering, then use one of many existing line-by-line diff tools.

[0]: github.com/stedolan/jq

<comment><USER10>
      $ echo "1." | jq .
      1

jq is great, but doesn't preserve float/int distinction. There may be other canonicalization details that pretty printers don't address.

It might be simpler to change jq and/or other pretty printers (though might be implementation or design reasons not to).

But the other advantage of a new project like SON is positioning not engineering, in our heads, not in the code: tool for the job. If so, the page should spend more time on what that job is (for when people search for that job).

And, as the jq example shows, tools not designed for this job mightn't do it exactly right.

EDIT I was reading offline, so didn't see the sibling reply.

<comment><AUTHOR> I love that we both started our comments with "jq is great". I hadn't seen yours either=)

</comment></comment></comment></comment></comment><comment><USER11> I've implemented similarly constrained string representations for numerics for a config file format, but I ended up allowing both "1" and "1.0" so I could distinguish integer and floating point literals ("1.00" was still forbidden, as was "0.0"... zero was stored in a specially tagged way).

The exponent syntax in JSON is fun because it allows numerous representations of 0 and 1 using e.g. 0e1 and 7e0

<comment><AUTHOR> > I ended up allowing both "1" and "1.0" so I could distinguish integer and > floating point literals

Definitely the toughest call when making a JSON subset like this.

</comment></comment><comment><USER12> You _could_ use JSON as a host: [https://github.com/cognitect/transit- format](https://github.com/cognitect/transit-format)

I do like the comment about having the S-expression format for data interchange defined since 1997.

</comment><comment><USER13> Isn't this just a reinvention of Canonical JSON [1]? There were efforts [2] to standardize it, although it seems this fizzled out.

[1] [http://wiki.laptop.org/go/Canonical_JSON](http://wiki.laptop.org/go/Canonical_JSON)

[2] [https://datatracker.ietf.org/doc/draft-staykov-hu-json- canon...](https://datatracker.ietf.org/doc/draft-staykov-hu-json-canonical- form/)

<comment><AUTHOR> Thanks for brining Canonical JSON up. There's an issue to investigate it here: [https://github.com/seagreen/Son/issues/7](https://github.com/seagreen/Son/issues/7)

It doesn't appear that Canonical JSON does anything about redundant escape sequences in JSON. I'm still looking into it to be sure. This is a big part of the motivation behind the Son spec, and represents about half the EBNF: [https://github.com/seagreen/Son/blob/master/son.ebnf#L19](https://github.com/seagreen/Son/blob/master/son.ebnf#L19)

For anyone else who knows of more JSON subsets, if you report them here: [https://housejeffries.com/page/7](https://housejeffries.com/page/7) it would be really appreciated. I definitely don't want to do duplicate work.

</comment></comment><comment><USER4> _" Object keys must be unique."_"

How should the following be serialized (if at all)?

{"a":0,"\u0073\u0323\u0307":1,"\u1E69":2,"Z":3}

Note that I'm using the \u forms even though they aren't allowed via the specification because, HN doesn't show unicode combining properly sometimes, and so that's it's clear to see that it's a different byte pattern.

<comment><AUTHOR> The plan is to go codepoint by codepoint in ascending order:

`{"Z":3,"a":0,"\u0073\u0323\u0307":1,"\u1E69":2}`

See this issue for the discussion: [https://github.com/seagreen/Son/issues/1](https://github.com/seagreen/Son/issues/1)

My current understanding is that RFC 7159 doesn't require Unicode normalization to be performed, if it does we're in trouble: [https://tools.ietf.org/html/rfc7159](https://tools.ietf.org/html/rfc7159)

</comment></comment><comment><USER14> Why not use something like Protobufs and Cap'n'Proto instead of yet another serialization format?

<comment><USER15> They require a schema. A schemaless binary serialization like CBOR or BSON is more amenable to JSON interchange.

<comment><USER16> How about [http://msgpack.org/](http://msgpack.org/)?

<comment><AUTHOR> Son's a niche tool to allow talking to JSON services in a more consistent way. It's not meant as an competitor to any other data format.

EDIT: s/alternative/competitor

</comment></comment></comment></comment><comment><USER17> > Piping JSON through multiple programs creates lots of trivial changes, which > makes it hard to do things like take meaningful diffs.

That's the virtue of having a format which offers a canonical representation for data.

> No insignificant whitespace.

I.e., it's not human-readable. It also has no decent way to exchange binary data (there is no byte-sequence type: one must either use Base64 or an array of integers, neither of which is space-efficient).

It'd be nice to have a format which is _both_ human-readable _and_ has a canonical representation. Fortunately, such a thing already exists (and I've even linked to it once already today), and has since _1997_ : [http://people.csail.mit.edu/rivest/Sexp.txt](http://people.csail.mit.edu/rivest/Sexp.txt)

Here's a JSON example (from [http://json.org/example.html](http://json.org/example.html)):

        {
            "glossary": {
                "title": "example glossary",
            "GlossDiv": {
                    "title": "S",
              "GlossList": {
                        "GlossEntry": {
                            "ID": "SGML",
                  "SortAs": "SGML",
                  "GlossTerm": "Standard Generalized Markup Language",
                  "Acronym": "SGML",
                  "Abbrev": "ISO 8879:1986",
                  "GlossDef": {
                                "para": "A meta-markup language, used to create markup languages such as DocBook.",
                    "GlossSeeAlso": ["GML", "XML"]
                            },
                  "GlossSee": "markup"
                        }
                    }
                }
            }
        }

Here it is in SON:

        {"glossary":{"GlossDiv":{"GlossList":{"GlossEntry":{"Abbrev":"ISO 8879:1986","Acronym":"SGML","ID":"SGML","GlossDef":{"GlossSeeAlso":["GML","XML"],"para":"A meta-markup language, used to create markup languages such as DocBook."},"GlossSee":"markup","GlossTerm":"Standard Generalized Markup Language","SortAs":"SGML"}},"title":"S"},"title":"example glossary"}}

Here it is in an advanced S-expression representation:

        (glossary "example glossary"
                  (div S
                       (entry SGML
                              (sort SGML)
                              (term "Standard Generalized Markup Language")
                              (acronym SGML)
                              (abbrev "ISO 8879:1986")
                              (def "A meta-markup language, used to create markup languages such as DocBook."
                                   (see-also GML XML))
                              (see markup))))

And here it is in its canonical representation:

        (8:glossary16:example glossary(3:div1:S(5:entry4:SGML(4:sort4:SGML)(4:term36:Standard Generalized Markup Language)(7:acronym4:SGML)(6:abbrev13:ISO 8879:1986)(3:def72:A meta-markup language, used to create markup languages such as DocBook.(8:see-also3:GML3:XML))(3:see6:markup))))

What, you'd like something which is immune to 7-bit/8-bit or email mangling? Here's the same data in transport format:

        {KDg6Z2xvc3NhcnkxNjpleGFtcGxlIGdsb3NzYXJ5KDM6ZGl2MTpTKDU6ZW50cnk0OlNHTUwoNDpz
        b3J0NDpTR01MKSg0OnRlcm0zNjpTdGFuZGFyZCBHZW5lcmFsaXplZCBNYXJrdXAgTGFuZ3VhZ2Up
        KDc6YWNyb255bTQ6U0dNTCkoNjphYmJyZXYxMzpJU08gODg3OToxOTg2KSgzOmRlZjcyOkEgbWV0
        YS1tYXJrdXAgbGFuZ3VhZ2UsIHVzZWQgdG8gY3JlYXRlIG1hcmt1cCBsYW5ndWFnZXMgc3VjaCBh
        cyBEb2NCb29rLig4OnNlZS1hbHNvMzpHTUwzOlhNTCkpKDM6c2VlNjptYXJrdXApKSkp}

All three of those S-expression formats can be _losslessly_ converted to one another. Ordering is exactly as specified (they are lists, not unordered or ordered dicts — although one can understand them as dicts, if desired).</comment>