Capital Man: Thomas Piketty is economics' biggest sensation and fiercest critic - <AUTHOR> http://chronicle.com/article/Capital-Man/146059 <comment><USER2> I've been looking forward to a discussion on Thomas Piketty by the HN crowd for a long time, I was afraid it would never get here because it would have been be too 'political' \- but I'm happy this has finally made the frontpage.

For those who are still unfamiliar with the name Piketty: He's a French economist (who briefly enjoyed a stint at MIT as professor before becoming disenchanted with the state of things here and returning to his home-country of France).

In his recent book "Capital in the 21st Century", he's done something very big. He's pointed out that capitalism is flawed -- that inequality is not an unintended result, but rather an inherent feature of it. He's done this with an enormous amount of data.

His prescription for the cure is a little controversial though: progressive taxes (up to 80%) for the rich, and a "global wealth tax" that he wants America to orchestrate. For a good summary (that talks about this main discovery that "r > g" \-- that return on capital is greater than the overall economic growth), watch this talk on Bill Moyers show with Krugman: [https://www.youtube.com/watch?v=QzQYA9Qjsi0](https://www.youtube.com/watch?v=QzQYA9Qjsi0) \- though this submission article seems to have a nice synopsis too.

As an article on NYT earlier this week said it, the book heralds a song of American socialism in the future. His findings are just too compelling to ignore, they're going to fundamentally change the tone and substance of debate we have about economic policies.

<comment><USER3> > In his recent book "Capital in the 21st Century", he's done something very > big. He's pointed out that capitalism is flawed -- that inequality is not an > unintended result, but rather an inherent feature of it. He's done this with > an enormous amount of data.

Am I missing something? Isn't this part of socialist analysis of capitalism from at least back to Marx?

<comment><USER4> I suspect a great many supporters of capitalism accept inequality as a part of it as well. They may even argue it's a feature, not a bug.

<comment><USER5> It is silly to talk about equality of capital. Imagine a world in which everyone is equal.

And imagine a philosophical man or woman, gazing up at the clear blue sky and being filled with wondrous thoughts that bring her or him great utility. Thoughts that no amount of money can buy. A simpleton can see nothing there. How can we call this equal? The very blue sky above us is unequal.

But that is the sky - the thoughts come from within. True, but what is a javascript console, just some pale blue sky, to be filled with whatever you want. The simpleton can not derive any utility. A programmer can create anything. How can we call that equal?

But that is just some writing.

And if we let this person publish those thoughts, that script, that site? Then the simpleton can have nothing - the programmer, anything. How can _that_ be equal?

There is no such thing as equality. There is only equal opportunity. Today, more than ever, nobody needs vast riches to achieve that. Perhaps everyone should have the chance to be well-educated, to learn whatever is within their capabilities, to choose to train for the best profession they can qualify for. But that is not "equality", in the sense discussed here.

Mark my words: so long as man can gaze up at a clear blue sky, as long as people are allowed to be friends and to talk, to think and to learn, to create, to share, to communicate - actual equality is a silly, misguided notion.

Look at opportunities - rather than capital results. Forget equality of capital, and look at equality of opportunity.

<comment><USER6> Equality of opportunity was lost once pure ideas become patentable, and competition became a race for the largest pool of obscured threats backed by government force.

<comment><USER7> Nicely said. I don't know why you are downvoted :D

</comment></comment></comment></comment></comment></comment><comment><USER8> "... capitalism automatically generates arbitrary and unsustainable inequalities that radically undermine the meritocratic values on which democratic societies are based."

Whatever else you might say about inequality, "unsustainable" is an obvious falsehood.

Roman civilization, for example, lasted two thousand years. Eight times as long as the United States. Think about that. One hundred generations of men lived and died as Romans. And the Roman Empire featured _radical_ inequality, of the sort that we could never have in modern America, no matter what the Gini coefficient was.

On one side was the Emperor and his soldiers, who could have you and your entire family tortured to death, purely on a whim (see Caligula). On the other side were slaves, who had no human rights at all and were treated as property. And between them, countless peasants starved to death every time there was a bad harvest, while countless aristocrats taxed their lands to fund lavish banquets. (In the Roman tax system, tax collection was _outsourced_ ; the tax collector was responsible for finding a certain amount, and anything above that he could _keep for himself_.)

That's some serious fucking inequality right there. And I'm certainly not saying it's a good idea, or that we should try to emulate them. But it was, as a raw historical fact, extremely sustainable, lasting eight times as long as the US has so far.

<comment><USER9> Rome's empire was based on their devotion to imperialism and not anything else. So having sustainability was militaristic more so than anything else.

The Roman Empire spent a heck of a lot of money and effort on their people though. Don't forget that in those times you could give a f*ck less about being royalty. If you were in the protected zones of the Romans you were already winning.

To Romans living inside the protected lands, the 'outside world' looked cold, harsh, and barbaric. So, you could put up with inequality as long as those aristocrats were making sure that there were roads, aquifers, and soldiers! :P

Also, slaves could eventually attain freedom and citizenship. So, while it was not a good life it still had potential to become a decent one.

Now, there were uprisings against the Romans by people who benefited from years of Roman protection and decided later on 'to plot their own course'. But that story is old/new. Happened to the Brits, Persians, Mongolians, etc.

<comment><USER10> Similarly to the first world vs the third world countries today ?

</comment></comment></comment><comment><USER11> Its _absolute_ wealth, not relative wealth, that determines whether your kids are likely to live to adulthood, how much leisure you're likely to have, what you'll eat, where you can live.

Capitalism has obviously excelled at raising absolute wealth across the board.

Relative wealth certainly matters when a society is foolish enough to vest massive power in a centralized political system, where it can easily be controlled by the wealthiest clade.

Which is the argument for more decentralized, limited government in a nutshell. That governments are run by the powerful is a tautology, and the iron law of oligarchy makes it clear that it isn't "the people" really running the show.

<comment><USER12> Piketty's argument, as well as the findings of the IMF report, is that what you've called relative wealth and absolute wealth are linked: greater inequality leads to lower growth rates. The entire economy suffers for the benefit of a few. Eventually, inequality might choke growth out entirely, leading to crisis.

<comment><USER13> This seems to contradict r > g . Inequality results in investment, which shifts wealth from the g part of the economy to the r part, due to a lower propensity to consume among the wealthy.

Or are there second order effects that the reviews (I haven't read the book) don't discuss?

</comment></comment></comment><comment><USER14> For what it's worth, here's a somewhat negative review of Piketty's book from James K. Galbraith:

[http://www.dissentmagazine.org/article/kapital-for-the- twent...](http://www.dissentmagazine.org/article/kapital-for-the-twenty-first- century)

I don't have much background in economics so I don't know if Galbraith's criticisms are sound, but it's an interesting critique.

TL;DR: "In sum, _Capital in the Twenty-First Century_ is a weighty book, replete with good information on the flows of income, transfers of wealth, and the distribution of financial resources in some of the world's wealthiest countries. Piketty rightly argues, from the beginning, that good economics must begin [with]—or at least include—a meticulous examination of the facts. Yet he does not provide a very sound guide to policy. And despite its great ambitions, his book is not the accomplished work of high theory that its title, length, and reception (so far) suggest."

<comment><USER15> I find it an interesting critique, too, though I do wonder whether it hits the mark. I'm no economist, but (assuming the fundamental work put into this book is as groundbreaking and unprecedented as said by those who _are_ economists) does the book _need_ to prescribe policy? Can't it stand on it's own, and perhaps aim to change the public policy discourse instead of coming down from on high with two stone tablets?

</comment></comment><comment><USER16> Firstly, even if we assume that his conclusions are correct regarding the acceleration of inequality, his proposed solution is guaranteed not to work.

Charitably assuming omnipotence, handing more power to political authority over free markets necessarily increases the already enormous returns on lobbying activities and makes the ability to raise barriers to entry a more valuable commodity for political authority holders to trade in. Why compete on merit when you can buy competitive power straight from the political apparatus?

Meanwhile back in reality, omnipotence is not an assumption you can make. Cryptocurrencies stand a good chance of removing power over the free movement of capital from political authorities. Even forgetting technology advancements that may allow people to entirely circumvent capital controls, there is the tried and true method of employing hordes of lawyers and accountants to tailor schemes to achieve the same ends through political channels.

Putting all of this aside though, the fundamental r > g observation is conditional. _If_ the return on capital is greater than overall economic growth, inequality increases. However, real growth is a function of the increase in the wealth of an economy, if capital cannot find opportunities to increase growth by investment then capital returns as well as growth will fall. Less growth, less return on capital.

Unless of course you can manage to subvert the entire monetary system through political channels and provide direct taps to the investment class so that even if they're not productively investing in anything and seeing real returns linked to growth they still see returns from quantitative easing and early access to new money. But who causes this effect? The same political authority the author proposes to fix the problem.

</comment><comment><USER13> This article, and most reviews of Piketty, have to be misrepresenting or misunderstanding something. The idea that r > g is simply mathematically impossible, and I don't think it's actually what Piketty is pushing.

That's because r is part of g. If the whole economy looks like E(t) = exp(rt)+rest, and exp(rt) grows faster than the rest, then eventually E(t) ~ exp(rt).

Since g = log(E(t))/t, g and r must eventually be equal.

The only way I can think of to resolve this is to assume a permanent redirection of wealth from investment to consumption. This could potentially result in investment returns being r, but the growth of invested capital being only g.

It's also worth noting that Piketty's numbers significantly underestimate income for the bottom 90%.

[http://www.forbes.com/sites/scottwinship/2014/04/17/whither-...](http://www.forbes.com/sites/scottwinship/2014/04/17/whither- the-bottom-90-percent-thomas-piketty/)

See also Doug's comment on Robin Hanson's blog post: [http://www.overcomingbias.com/2014/03/hidden-taxes-must- be-h...](http://www.overcomingbias.com/2014/03/hidden-taxes-must-be-huge.html)

Perhaps Piketty merely means that E[r] > E[g] (where r and g are both random variables). But that doesn't actually imply long term concentration of wealth at all, which seems to contradict the spirit of Piketty.

<comment><USER17> I glossed over the equation reading it as the rate of return on capital vs labour. That is, capital increasing faster than wages as a share of the economy, overall. I don't know if that helps or obscures.

</comment></comment><comment><USER18> If capital allocation is a skill/talent like most other things, then we should expect to see some people consistently outperforming the general population (just as we would expect a professional basketball player to consistently outperform an average player). If this group of skilled capitalists consistently gets higher average rates of return, it seems inevitable that over time they would end up with a larger fraction of the wealth -- that's just math. I'm surprised that this is a controversial observation.

<comment><USER19> I don't know that it is. What is controversial seems to be what comes next. Do those capitalists get to use those fortunes to wield massive political power? Do they get to make rules that benefits themselves even to the detriment of the larger society? Do they get to leave their fortunes (and corresponding political clout) to their children, who may be far less talented?

I haven't read this book, and maybe this isn't really the question you were asking, but it seems like there is some confusion about why people like myself have problems with capitalism. I have no particular problem with smart people being rewarded to some extent for finding new ways to make life better for others (Adam Smith's baker making bread for the town not to feed the town but to enrich himself).

But I do have a very, very big problem with the idea that just because someone "won" the economic contest he or she is somehow fit to make social and political decisions or somehow deserves greater consideration in the social and political spheres. I also have a huge problem with inheritance, though I don't really see a non-"radical" way to solve it.

<comment><USER18> The (current) top comment says: In his recent book "Capital in the 21st Century", he's done something very big. He's pointed out that capitalism is flawed -- that inequality is not an unintended result, but rather an inherent feature of it.

So apparently the fact that capitalism naturally produces inequality _is_ controversial.

How to address that inequality is obviously a hard question. However, if you are thinking about it as "rewards", then you are guaranteed to arrive at the wrong answer.

</comment></comment></comment><comment><USER20> Milanovic's review of Piketty's book in The Journal of Economic Literature is Matt Yglesias's first recommendation for an in-depth treatment of Piketty's book:

[http://mpra.ub.uni- muenchen.de/52384/1/MPRA_paper_52384.pdf](http://mpra.ub.uni- muenchen.de/52384/1/MPRA_paper_52384.pdf)

</comment><comment><USER21> Taleb mentioned on Twitter (with a draft paper to back it up) that the observed (ie. by Picketty) inequality increase could just be a statistical illusion given the methods of measuring it.

<comment><USER22> Maybe you could be bothered to link the paper? Otherwise this is no more than hearsay.

<comment><USER23> [https://docs.google.com/file/d/0B8nhAlfIk3QIbzRrRkhhc1RNY0U/...](https://docs.google.com/file/d/0B8nhAlfIk3QIbzRrRkhhc1RNY0U/edit)

</comment></comment></comment><comment><USER24> I read the whole article, but I don't understand why he is so offended by the wealthy being wealthy and getting wealthier. Does Bill Gates being rich hurt poor people? Not that I can see. In fact he puts a lot of money into curing diseases. Does Musk being rich hurt poor people? Not that I can see, he is saving the environment by making electric cars popular and bringing back the country's space capability. If this is what rich people do, by all means, lets have more and bigger rich people.

<comment><USER25> Piketty starts off by saying that inequality isn't necessarily bad by itself, but asks whether it is useful for society - which I think you'll agree is the right way to approach it.

The negatives are of course more associated with what happens to the poor than the rich. If you are born poor, CAN you rise to be a hedge fund manager (no matter how talented you are)? Will low-pay and long-hours spark political or social instability which is not worth the cost? What does society lose/gain from one level of inequality as opposed to a different level?

Its a complex issue though and you'd really have to read the book to understand how Piketty approaches this.

</comment></comment><comment><USER26> Does anyone have a short and sweet one of Piketty's most profound findings:

the data reveals a deeper historical tendency for the rate of return on capital to outstrip the overall rate of economic growth, leading to greater and greater concentrations of wealth at the very top. quote from NY Times article: www.nytimes.com/2014/04/19/books/thomas-piketty-tours-us-for-his-new- book.html

Why does the rate of return on capital exceed the rate of economic growth? Isn't this just indicative of an asset bubble? And bubbles don't last forever. Or do they (if the Fed is always bailing the banks out)?

<comment><USER27> The Economist's review of his book gives a pretty good summary of his thesis. [http://www.economist.com/blogs/freeexchange/2014/01/inequali...](http://www.economist.com/blogs/freeexchange/2014/01/inequality)

<comment><USER3> From the linked article:

> "But Marx's original critique of capitalism was not that it made for lousy > growth rates. It was that a rising concentration of wealth couldn't be > sustained politically."

I feel like this is one of the very most important things to consider in any discussion of wealth concentration. Economic growth does not necessarily correlate with a broadly pleasant experience for all participants in that economy. I think we came out of the 20th century with it being taken as axiomatic that _some_ kind of tradeoff must be made to achieve both goals in concert somehow, but this understanding seems to be receding (really starting with the rise of austerity policy in the 80s, but coming very much to a head lately).

</comment></comment></comment><comment><USER28> "The crux of his argument is a deceptively simple formula: r > g, where r stands for the average annual rate of return on capital (i.e. profits, dividends, interest, and rents) and g stands for the rate of economic growth. For much of modern history, he contends, the rate of return on capital has hovered between 4 and 5 percent, while the growth rate has been decisively lower, between 1 and 2 percent. (Piketty makes a compelling case that economic growth, which depends in good part on population growth, is unlikely to accelerate dramatically anywhere but in Africa, given current demographic trends.) Thus he adduces capitalism's "principal destabilizing force": Whenever r > g, "capitalism automatically generates arbitrary and unsustainable inequalities that radically undermine the meritocratic values on which democratic societies are based."

Now that was fascinating

<comment><USER29> So the r>g makes a lot of sense, but it seems to assume that fortunes only grow. In real life they tend not to.

What I mean is that there are destabilizing/deconcentrating forces in an economy in addition to stabilizing/concentrating ones. Like companies going bankrupt or entire industries being displaced by new ones.

If you're worth $100mm it's not because you have a million hundred dollar bills in a vault, or hundreds of pounds of gold or a bank account with many zeros on it. You've got the money tied up in businesses that yield that r which is greater than g. And that SHOULD expose you to risks which could cause you to lose your money. In the last 20 or so years it seems like that exposure has been largely mitigated at least in the US which is quite unfortunate.

The other thing that strikes me is it kind of makes the assumption that only the rich (or capital) can participate in the r>g phenomena. With interest rates at less than 1% (and probably negative re:inflation) it doesn't make any sense for a normal person to save money. But what if inflation is 2% and real interest rates are 6%? Can the regular folk not participate in that as well?

<comment><USER30> Compound interest alone will propel the rich further and further ahead.

But being rich also gets you access to shortcuts, investment opportunities and advisors no one else can call on. They insulate you from risk and target tax loopholes to help.

When that fails you have access to political insight and levers.

</comment></comment></comment><comment><USER31> It's good Piketty is out there fighting for this stuff. As he mentions in his book none of the problems are particularly new. If you don't do much taxing or regulating, wealth will tend to get concentrated in the hands of a minority of investors with everyone else working for modest pay. If you bring in policies to counter that such as high inheritance taxes and subsided education then things get more equal. The UK went through some of that at the start of the century where the country used to be owned by lord whatever in his stately home and then 80-90% taxes caused then to lose that and the places are now mostly owned by the National Trust and open to the public as historical exhibits. I'm not sure how it's going to play out this time. The world economy is growing quite well. The political will to even things up only seems to get strong enough to make a big upheaval with things like World War 1 in the above case so I imagine not much will change in the short term.

</comment><comment><USER32> This doesn't strike me as surprising -- capitalism rewards capital, not labor. Ideally, each generation is able to use labor to acquire a bit of capital, and share it with their children until the family is financially secure.

Rather than inequality between brackets, or even people, I'd prefer to focus on whether the system of "save some each generation" is breaking, and if so, what can be done to fix it.

</comment><comment><USER33> Any insights on getting this book on audio? Too new for Audible.. I find I can grasp the economic material easier listening to it.

</comment><comment><USER34> Tonight's Cosmos featured the discovery that lead pollution from car emissions was poisoning the environment and humans. However, automobile and oil & gas companies had a vested interest in the status quo.

It took 25 years to remove lead from gasoline, e.g., unleaded gasoline. Unrestricted Free Market Capitalism has no environmental or health constraints or concerns. There must be a counterbalance or else our health, wellbeing, and the environment will suffer.

</comment><comment><USER9> I have not read Piketty's book. But can someone tell me how he showed that his discovered pattern of r>g is applicable to capitalist driven economies only and not ANY general economy?

The possibility of faster rate of return on investments (whatever resource you are investing) is supposed to exist in any gamed system. In an overall system where the available resources max at X, any individual's objective is too attain the largest portion of X as possible.

Whether that be through promoting capitalist ideologies, bureaucratic ideologies, or imperialistic ideologies, etc.

Generally speaking the ideologies you try to impress on others is spoken of in terms of being best for the 'g' value (overall economic growth), but we all know each person will just play the game of whatever system they are in to attain their own personal 'r' value.

Basically, what I am saying is: there have been very poor and very rich people in every single economic system throughout the span of human history. And ,at least some prevalent power distribution dynamics (game theory) can most likely be used to explain them all.

Th funny part is that r>g was the whole purpose of capitalism. If that were not true then you would not have the huge incentive for individuals hoping to build economic empires (or generally grow their fortunes decently).

r>g seems to be the promise that royalty/aristocrats must receive before making a political decision. Or the 'promise' Columbus looked forward too before he would 'discover' a new world for Spain. Or the promise any individual player must believe in if they are going to do something significant beyond themselves.

r>g was the even the general promise given to people during communist revolutions. Take money from the rich and give it to us, the poor.

There has to be incentive for individual players for them to want to pursue an ideology.

So, I am always surprised when people take ideologies so seriously, because in the end it's only a bit of game dynamics.

If someone wants government to put more focus on redistribution like Picketty, then so be it. All that means is that the place to have power will be via a position in government. I guess the people pushing for this enjoy the latest productivity of Congress. ;)

I, for one, do not care. Everyone will simply (as people have always done) 'play the game'. And then some time down the line the "winners" of whatever the game is will be yelled at and something will commence a 'restart'.

Welcome to humanity.

<comment><USER7> ... and in the meantime, the systems of thought (as I tried to argue in my other posts) that are erected to hide these basics behaviors will become increasingly intricate and complex and hide this very fact that people are people in increasingly interesting ways.

I believe, as I mentioned above, the idea that 'humans are not rational' is one of the latest such constructs to hide basic reality.

In a way, it is an interesting evolution of delusion, to the point where it gets extremely hard to avoid being drawn into it.

Thinking this line further, maybe the next restart will be rather due to the fact that the complexity is so big that people just accept reality?

</comment></comment><comment><USER35> If he talks about capital and doesn't mention the Federal Reserve or the rise of fiat currency, he will have left out something quite important.

Slightly more than 100 years ago, all the major currencies of the world were backed by precious metals such as gold; now, none of them are.

<comment><USER36> Of course Pickety doesn't mention it. That would ruin his narrative. And it wouldn't back his central thesis and proposal to tax the living excrement out of the rich. You know, to fix a problem none of us ever knew of until he "told us" about it in his giant weary book.

But I'll hold off on a proper rant about him and his book once I've read it.

</comment></comment><comment><USER37> BREAKING: Capitalism is worst system except for all the others.

News at 11.

</comment><comment><USER38> Carlin said this better: [https://www.youtube.com/watch?v=acLW1vFO-2Q](https://www.youtube.com/watch?v=acLW1vFO-2Q)</comment>


Supply-chain error or stock manipulation? - <AUTHOR> http://www.marco.org/2013/01/14/apple-cuts-orders-for-iphone-parts

<comment><USER2> It does seem a bit fishy.</comment>


First chapter of Kernighan and Donovan's new Go book [pdf] - <AUTHOR> http://www.gopl.io/ch1.pdf <comment><USER2> From the book:

"But it has comparatively few features and is unlikely to add more. For instance, it has no implicit numeric conversions, no constructors or destructors, no operator overloading, no default parameter values, no inheritance, no generics, no exceptions, no macros, no function annotations, and no thread-local storage."

<comment><USER3> > no default parameter values

Hearing this leaves a bad taste in my mouth, because one of the (mis)features I've found in Go is its implicit default value in struct initialization. In Go, you don't get a compile error when you miss some fields while initializing a struct. e.g.

      type T struct {
        a int
        b string
        c float64
      }

      t := T{c: 1.5}

will happily set `t.a` to 0 and `t.b` to an empty string. While this is useful for maintaining backward compatibility (adding more fields to a struct doesn't break upstream code), it also hinders discovering genuine mistakes at compile time. So typical Go programs end up using 0 or an empty string as a sentinel value. This is probably what made me feel Go's dynamic nature the most. It really is pretty close to a dynamic language.

<comment><USER4> I should explicitly state I seem to be in the minority in the Go community here, but: You don't get a compiler error if you initialize by name. You _do_ get a compiler error when you initialize by position. In my minority opinion, you can and should use that to your advantage whenever possible. Some structs are clearly "configuration-like", for instance, and you don't want an error if a new option shows up, which will probably default to whatever you had before anyhow. Some structs are clearly data structures, and you'd really like to know if your two-dimensional point suddenly grew a third parameter. Of course it's not a bright shining line, but it's often pretty easy to tell which you have, or which thing you want, and use the correct initialization.

In this case, if you used:

        T{4, "hello", 3.5}}

most future type changes to the T struct will become compiler errors. (It won't be if the types are compatible, for instance, changing the first to a float would still result in a legal struct. If you have richer types in play that is less of an issue.)

golint will then complain at you, but you can pass a command-line switch to turn that off.

(This, amusingly, puts me in the rare position of siding against the Go community, on the side of the language designers. Bet you may not have known there is such a position to take. :) )

<comment><USER5> One non-obvious downside is that the Go 1 compatibility guarantee doesn't apply to struct literals that don't use field names. (I suspect you're aware of this, but other readers might not be.)

So it's possible that a future version of Go could add a field to some struct you're using and your code will stop compiling when you upgrade. It's an easy fix, of course, so it's not that big of a deal, but it's worth realizing.

<comment><USER4> The point is that if I'm using stuct literals, I _want_ the compiler to stop me for those structs.

I'm explicitly rejecting the idea that all struct changes should be possible without producing compiler errors. Compilers errors when the guarantees your code is based on changes is a _feature_ , not a bug.

</comment></comment></comment></comment></comment><comment><USER6> To those in the Go community:

\- What is Go well suited for other than network programming? \- Why might one decide to write the backend API of their web app in Go, compared to say Grails, Python etc.

<comment><USER7> Other than some quite significant performance gains, I'd say the main upside for the case of a backend API would be channels. Concurrency is dead simple in Go - and if you want to do 5 different requests to ElasticSearch in parallel and merge the results when all of them are finished (like we do for Universal Search), that's just a few lines of very readable Go. Try that with a GIL, sure, multithreaded Python and Ruby is possible, but it's not for the faint hearted and not as easy to read.

Moreover, I love static deploys and cross compilation with Go. Compile your app (even to Windows!), copy it to a server, simply run it as a single binary. No dependency management, no apt-get & easy_install & pip, it just runs.

<comment><USER8> While Go does provide channels, I'd argue that they are not dead simple. I'm not saying this to bash Go, and I have willingly used it to solve problems. But I think it needs to be made more clear that this often-praised aspect of Go may disappoint those who are familiar with alternative techniques available in mainstream (read: not Haskell) languages.

For instance, look at the "Go Concurrency Patterns: Pipelines and cancellation" article: [https://blog.golang.org/pipelines](https://blog.golang.org/pipelines) You'll notice the line "We introduce a new function, merge, to fan in the results" and after that, you will see how you have to write merge() yourself for every different data type that you use. Yes, you will have to repeat this same type of code, over and over, any time you want to pipeline, fanout, or merge, a new data type (unless you resort to interface{}). Furthermore, you will have to use the Go race detector to make sure you didn't actually mess something up.

I can't speak for Python or Ruby, but if you are using Node.js you can use a library like Bluebird which provides promise combinators. Then it's very easy to perform 5 requests and to handle errors and cancellation on one or more requests. You can do this and more on any arbitrary data type without writing merge() and nesting coroutine returning functions repeatedly.

So for handling async operations like dealing with APIs, I personally prefer tools like promise combinators or reactive programming (see Reactive Extensions for Javascript, also available in many other languages, or supplies in Perl 6 if you're crazy like me) over the significantly more manual approach of using typed channels in Go. I'm sure there are tasks where tight manual control of channels is important, but for the type of work I've been doing Go is simply too low level.

This article goes into more detail on the weaknesses of pipelining in Go: [https://gist.github.com/kachayev/21e7fe149bc5ae0bd878](https://gist.github.com/kachayev/21e7fe149bc5ae0bd878)

<comment><USER9> >This article goes into more detail on the weaknesses of pipelining in Go: [https://gist.github.com/kachayev/21e7fe149bc5ae0bd878](https://gist.github.com/kachayev/21e7fe149bc5ae0bd878)

This write-up provides some great arguments for why generics could be very useful for abstracting away some of the details of concurrency management.

I find it odd how so many Go developers insist generics are totally unnecessary.

<comment><USER10> Generics can be nice, but they're clearly not "necessary" to any of the languages that don't support them. Besides, the cost that generics would exact in terms of syntax complexity, compile time, and startup time is something that many Go-detractors dismiss as irrelevant.

Myself, I think enforced tab-based formatting is utterly insane, but ultimately it doesn't matter. Part of the philosophy behind Go is to keep certain things very simple, and leaving generics out is a big part of that. I don't think that they're going to change their mind because non-Go programmers advocate for them. If that makes it the wrong language for your project, then there are so many others to consider.

<comment><USER11> But Go already has generics: channels, maps, make(), len(), etc. are work on generic types. You couldn't have typed channels without generics!

Go just doesn't have any syntactical way of declaring generic types. But given the above, nobody can argue that generics isn't extremely useful, even in the context of Go. "Oh, but the official library is special because it's part of the language", someone might argue. But one would have to be fairly damn obtuse to claim that Go would be better without the built-in generics, or that for some reason those benefits wouldn't extend to the language as a whole, if implemented.

I'm really surprised the authors of Go decided to allow generics only for the official library, because they've had to jump through some serious hoops to avoid it. If you look at "reflect", "builtin" and "sort", to pick a few, those packages are a graveyard of typing awkwardness. Look at the sorry state of the sort package, which even has a special function to sort strings. It goes on and on; every time I work with Go code, I end up implementing functions like min() and max() and cmp(). Why is "range" special? Why isn't there a way for generate iterators for any value? Etc.

Go is "simple", sure, but ends up being rather complicated as a result, with tons of the same code having to be written over and over for different types, and tons of typecasting between interface{} and real types, and so on. Nobody (as far as I can see) is asking for Haskell-style typeclasses or operator overloading or type traits or higher-kinded types or any of that. Several up- and-coming languages (such as Nim) implement generics without going overboard with complexity; quite the opposite, generics makes those languages simpler.

<comment><USER9> >Go is "simple", sure, but ends up being rather complicated as a result, with tons of the same code having to be written over and over for different types, and tons of typecasting between interface{} and real types, and so on. Nobody (as far as I can see) is asking for Haskell-style typeclasses or operator overloading or type traits or higher-kinded types or any of that.

Exactly. We're not asking for much here, just the ability to do the most basic kind of type parameterization.

The only benefit afforded by missing generics is simplicity in the compiler. It does nothing or worse than nothing when it comes to simplicity in actual Go code.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> "Typeset by the authors in Minion Pro, Lato, and Consolas, using Go, groff, ghostscript, and a host of other open-source Unix tools. Figures were created in Google Drawings."

groff still going strong... although it seems like Kernighan got tired of drawing using the 'pic' language...

<comment><USER13> Yep, I was really curious to see if he had finally given up and gone to TeX, Indesign, or the like.

I guess that if one's not dealing with a lot of math, groff is enough for many typesetting jobs.

I'm curious as to which version of groff they used. Heirloom groff? GNU groff? hmm...

<comment><USER14> groff == GNU roff by definition. I suspect by "Heirloom groff" you mean troff or nroff.

</comment></comment></comment><comment> vezzy-fnord Interesting to see that the direct lineage from Pike's prior languages and CSP experiments is reaffirmed. I wrote about this here earlier, with some notable disagreements in response: [https://news.ycombinator.com/item?id=9711639](https://news.ycombinator.com/item?id=9711639)

<comment><USER15> Nice to see Oberon getting its fair share of credit too

</comment></comment><comment><USER16> Question for the Go experts out there: does it make sense to buy this book to learn Go or are there better tutorials/books?

<comment><USER17> Effective Go is a great intro: [https://golang.org/doc/effective_go.html](https://golang.org/doc/effective_go.html)

Also, check out the blog posts for more information on specific topics: [http://blog.golang.org/](http://blog.golang.org/). They are _really_ well written.

<comment><USER18> ^ This! It is one of the reasons I like Go. Effective Go is all you need to understand the language and be able to read even the most complex Go programs.

</comment></comment></comment><comment><USER19> This is much better than the previous Go documentation, particularly in the concurrency area. The previous Go documentation introduced goroutines and channels, stated the mantra "share by communicating, not by sharing", and then gave examples with variables shared between goroutines.

It now seems to be recognized that, in Go, if you want to lock shared data, use the lock primitives. Don't try to construct locking primitives from channels; that's error-prone and hard to read. This new manual seems to recognize this. When they want a shared counter, they use a shared counter with traditional locks.

<comment><USER20> You've been misinformed. The 2009 version of Effective Go stated, as it does now:

"This approach can be taken too far. Reference counts may be best done by putting a mutex around an integer variable, for instance."

[https://web.archive.org/web/20091113154825/http://golang.org...](https://web.archive.org/web/20091113154825/http://golang.org/doc/effective_go.html#sharing)

<comment><USER21> Of course if you care about speed at all, you will stay away from Go's mutex's. Time your own code, it is shocking how slow they are. I haven't published my own test times, but with a quick search here's an example of a 10ms loop taking 2s with mutex's. [http://www.arkxu.com/post/58998283664/performance- benchmark-...](http://www.arkxu.com/post/58998283664/performance-benchmark-go- lang-compares-to-java)

<comment><USER22> A mutex held for up to 10ms on each iteration, over 500 iterations, averaging out to 2s doesn't seem surprising at all. In fact, this is quite expected. It would take considerably longer if the random sleep hit 10ms every time.

If you modify the code to release the lock before sleeping...

        func (c *Counter) add(ch chan int) {
                c.Lock()
                tmp := c.Num
                c.Unlock()
                tmp += 1
                time.Sleep(time.Duration(rand.Intn(10)) * time.Millisecond)
                c.Lock()
                c.Num = tmp
                c.Unlock()
                ch <- 1
        }

...and reacquiring it after, it still finishes in 10ms on my machine, as you'd expect. As you can see, the problem isn't so much that locks are inherently slow in Go, but rather the mutex, as the acqusition function name implies, is doing what it is supposed to do: Lock. What is true is that you have to be careful to use them properly.

</comment></comment></comment></comment><comment><USER23> This is a good place to ask this (because Go posts attract a lot of commenters, even those who dislike Go and like some other language):

Which language/framework would you choose today for writing WebServices? Preferably with the following characteristics: static type (or at least static analysis), easy deployment (ex, generates a single binary like in Go), supports concurrency very well, is small/simple, has good tooling and debug support, and is fun to write. Go (except for good debug support)? Elixir (dunno how good it is with deployment and debugging)?

<comment><USER24> Elixir is what I would choose. I think of deployment as a one time cost. So, the cost of exrm+docker solves your build problem and then your deployment is like a "single binary". (except its a single docker container which is sufficient for me, maybe not for you.)

As I understand it the go runtime must pause to resolve atomic locks for all the goroutines running. So, when you're doing a dozen goroutines in your app it's not a problem, but you couldn't do thousands of them. Meanwhile elixir processes can handle millions of processes without blocking like that, and that plus the ... strength... of immutable memory (vs. shared in go) makes me like elixir, _especially_ when concurrency is important. (I don't consider go to be a concurrent language in this regard.)

Good tooling and debug support: I can't compare the two languages in this regard, go seems to have good library support. Elixir has excellent tooling and debug support (REPL mainly, and really nice error messages), and I think Elixir has good library support too.

Fun to write: So far for me, Elixir wins this hands down. Go is running neck and neck with Erlang in the "not very fun to write" range for me.

Of course this is all personal opinion.

The only objective thing is- if you need real concurrency and to build a distributed system (go doesn't even have the concept of language support for Nodes) then Elixir is the way to go.

If on the other hand you need max compiled speed on a single node, the Go wins hands down.

<comment> vezzy-fnord No such thing as Elixir processes. They're Erlang processes because they're constructs of the EVM. Whether or not you consider the latter fun to write is irrelevant.

<comment><USER24> Of course. I don't think anyone is pretending like Elixir isn't built on top of erlang.

</comment></comment></comment></comment><comment><USER25> Link is to Chapter 1 with no context about whole book/availaibility.

Book homepage is here: [http://www.gopl.io/](http://www.gopl.io/)

mods, please fix

Several free full Go eBooks listed at [http://hackershelf.com/topic/golang/](http://hackershelf.com/topic/golang/)

</comment><comment><USER26> I'm currently reading it as I started to program in Golang only one month ago and I'd never heard of goimports, this is a nice tool! Mixing it with GoSublime and it does a really good job [http://michaelwhatcott.com/gosublime- goimports/](http://michaelwhatcott.com/gosublime-goimports/)

The book is well written and it looks like it covers a lot of common topics, I think I'm gonna buy it.

</comment><comment><USER27> Just as K&R introduced us to "Hello, World," I'm amused they adapted their first program to an Unicode world: "Hello, 世界." Seems like a great first chapter, covering computer graphics and web server/byte fetching to boot.

<comment><USER28> > they adapted their first program to an Unicode world: "Hello, 世界."

Would be nice if you could compose those complicated Unicode characters from simpler building blocks, e.g.

        fmt.Printf("Hello, %a", "→↘𠃊廿↓田介")

<comment><USER29> I think that would be a fun way to practice kanji, but I'd much rather just type "seikai" and press enter. Modern IMEs are awesome.

</comment></comment></comment><comment><USER30> K&R is a great book. Even though I have no interest in Go, I'll read this, just to see if it's as good.

</comment><comment><USER31> I noticed that the lissajous program in 1.4, as included, generates non-random lissajous figures since the random number generator is not seeded. I couldn't find any reference to this in the text and this could be confusing to beginning readers. Is there a recommended way to submit errata?

<comment><USER32> You're correct, but in the interest of:

 _We'll discuss these topics only briefly here, pushing most details off to later chapters, since the primary goal right now is to give you an idea of what Go looks like..._

it's probably clearer to use the default random source.

<comment><USER31> Good point, but I also think it will be confusing to beginners who compile and run the program only to find that it always generates the same figure without any explanation as to why. Both the package documentation and text say that the generated figures will be random.

The fix is just a couple lines and, I would argue, should be included in the source to eliminate the surprising behavior. [http://play.golang.org/p/1WlhOdJ1pk](http://play.golang.org/p/1WlhOdJ1pk)

</comment></comment></comment><comment><USER33> Would Go provide a viable alternative to C++ for numeric and computer graphics 'kind of stuff'? I have no problem with C++ but the better-than-python proclamations got me intrigued.

<comment><USER34> Given that there's a GC and from what I understand(I'm no go expert) limited ways to specify memory layout I'd say no.

<comment><USER35> I am curious about the limitations around memory layout. Go provides a fair amount of control to the programmer. Fields appear in the order declared in a struct (although potentially padded), structs declared as values, not pointers, are located in memory with the declaring struct and we can have arrays and slices of non-pointer structs they will all be arranged contiguously in memory.

I am not a C/C++ programmer are there more powerful facilities provided in these languages?

Real question, not trying to start a flame war :)

</comment></comment></comment><comment><USER36> This is going to be the standard text for the language. The quality of writing is exceptionally good. It's high time the AW professional computing series had another hit.

</comment><comment><USER37> The K&R for Go, sounds great!

<comment><USER38> Sadly, there is no 'R' anymore :-/

<comment><USER39> It's a little odd, given that Kernighan and Pike have written a couple of excellent programming books together, and with Rob Pike's leadership in the Go project, that this one isn't K&P.

</comment></comment></comment><comment><USER40> I just pre-ordered this book. I already have a feeling it will make into my favorite book series [1].

[1]: [http://www.catonmat.net/blog/top-100-books-part- one/](http://www.catonmat.net/blog/top-100-books-part-one/)

</comment><comment><USER41> One of my co-workers preordered this, I hope to skim through it if he brings it into the office.

</comment><comment><USER42> Can people post their opinions on static linking of go binaries? Doesn't it result in increased size of runtime binaries when compared to those generated by C/C++?

<comment><USER43> Yep. It does; but then again my entire static binary (no dependency on libc even) is around 10 MB in size...

I love being able to pull down a docker container that fast!

</comment></comment><comment><USER44> > ...its approach to data abstraction and object-oriented programming is > unusually flexible.

I'm not sure I can get behind that without generics.

</comment><comment><USER45> Hope this book is going to be another Epic and Great reference like this gem[1]

[1] [http://t3.gstatic.com/images?q=tbn:ANd9GcTK3WbaQiO5mCmvRGtvc...](http://t3.gstatic.com/images?q=tbn:ANd9GcTK3WbaQiO5mCmvRGtvcokJUyrd2wcpOj3WcgO8TQyecr3_TrmU)

<comment><USER46> The link is to an image of the front cover of K&R2 (Kernighan & Ritchie, "The C Programming Language", 2nd edition). You probably meant the image to show up in your comment, but it didn't.

</comment></comment><comment><USER47> They've proven that they can make a PDF. Will they sell me one?

</comment><comment><USER48> I still prefer forced data abstraction, i.e. classes as a core construct. GO does not force that. Data abstraction, when properly done maps the code more closely into the problem domain to be solved. In the long run that makes the code more maintainable and extensible.

<comment> why-el I am really not sure this is true. In my opinion classes force an premature taxonomy almost all the time. I like that you can simply attach methods to structs when you decide you want object like behavior.

<comment><USER49> I understand both points of view but lean strongly toward why-el's. If there's one thing Java has taught us it's that "premature taxonomy" (love that term) can be a huge unnecessary tax on small to medium sized projects.

</comment></comment></comment><comment><USER50> er, they left a couple things out of the family tree (page xii). Like C++, Java, C#, ...

<comment><USER51> It's safe to say that C++ had an influence on the Go language at least as what _not_ to do. The emphasis on language simplicity and compile speed seemed to be a result of fairly large C++ code bases at Google.

</comment></comment><comment><USER15> I have no idea what they will specifically say regarding calling C from Go, but the table of contents says that part is only going to be about five pages.

I really wish they would beef up this portion of the book.

<comment><USER52> The fact that it is a bit non-intuitive to call C from Go is exactly where there are so many 'Pure Go' libraries. I consider this as a short-term hurdle with long-term benefit.

<comment><USER15> It would be nice if all C libraries get rewritten in Go, but realistically, there are way too many for that to ever happen.

<comment><USER53> There are lots of libraries in C (and Java) but the question is which ones are essential for whatever you're trying to do? There are lots of Go programs you can write just using the standard library. That appeals to me since I'm generally in favor of avoiding unnecessary dependencies. But if you need it, you need it.

<comment><USER54> It really depends on what you're doing, but even in common obvious stuff like networking, there can be functionality in libcurl or OpenSSL that you really need but isn't replicated in Go. Several years ago I remember trying to do SSL certificate verification with Python and finding the standard library lacking.

Also bear in mind that good compatibility with C also means good compatibility with just about every other compiled language, including Rust.</comment></comment></comment></comment></comment>


IBM gets out of facial recognition business - <AUTHOR> https://www.cnbc.com/2020/06/08/ibm-gets-out-of-facial-recognition-business-calls-on-congress-to-advance-policies-tackling-racial-injustice.html <comment><USER2> Extensive discussion yesterday: [https://news.ycombinator.com/item?id=23462568](https://news.ycombinator.com/item?id=23462568)

</comment><comment><USER3> This is legendary. How did he convince the board members that its good for business

<comment><USER4> The cynic in me automatically answers, "They realized they could not compete in the space, so figured, why not wage a PR campaign against those that are competing successfully?

<comment><USER3> Its reasonable to be cynic about any for profit corporation. On the other hand facial recognition is not yet dominated by any single organization and IBM can enter if they really wanted to, so i guess there is some good faith involved.</comment></comment></comment>


Men's Locker Room Designers Take Pity on Naked Millennials - <AUTHOR> http://www.nytimes.com/2015/12/04/fashion/mens-style/mens-locker-room-designers-take-pity-on-naked-millennials.html <comment><USER3> Watching old men walk around and have conversations with each other about their wife and kids while their drooping hairy genitals flap back and forth has been a time honored gymgoing right of passage for generations. These young whippersnappers have no respect for tradition, clearly.

<comment><USER4> i'm on the older side of the millennial generation (born in 1980) and since I was 22, I've been going to one of those nicer gyms where there's lots of old men walking around with their junk hanging out.

it bothered me for about 6 months, then i got over it.

also realized that it was an amazing place to network. putting up walls would have been bad for my career.

</comment></comment><comment><USER5> Can we get over the generations concept soon? Younger people are less mature... because they are younger.

At some point the millennials will be the old generation complaining about how we used to have to actually "text" rather than just think our ideas and have them transcribed.

There will be something about how the process of having to conceive of grammar and spelling made your thoughts more coherent.

But society will move on anyway, and yes, the younger generation will be less mature, at least, until it gets older.

I never really understood why it bothers people so much that things progress. But maybe I am just grumpy because it is Monday :)

<comment><USER6> Differences in attitudes between generations are interesting to think about, and illustrative of changes to society. Are you suggesting that literally the only differences between generations are related to maturity? The article didn't seem overly "bothered" by the millennial attitudes it described, rather it was simply noting them and exploring the idea that business practices may need to change to accommodate them. The only one who seems "bothered" is you, so maybe you are feeling grumpy! Hope you feel better soon :)

<comment><USER7> The problem with discussions of change to society and differences between generations is it's very tempting for people talking about those things to extrapolate anecdotes and first-hand experiences, which measure the journalist more than they measure society.

For example, a 25-year-old journalist might think that getting married and having children has risen in popularity compared to 7 years ago. Is it a sign people are recovering confidence after the 2008 economic downturn? Maybe - <USER2> it might just mean all his/her friends from school are getting married and having kids, and more people do that at age 25 than at age 18. Maybe society hasn't changed at all :)

</comment></comment></comment><comment><USER8> I'm surprised at the comments here. I wonder how many of you experienced bullying in gym class over your body's appearance. The privacy of one's naked body is pretty important thing to a lot of people, but particularly to young teenagers, many of whom would opt out of gym class if they could, and who often enter puberty at very different ages. Even if you are or were comfortable walking around naked in front of others, it's cruel to force all people to face something that just isn't necessary.

Now, I agree that "comfy couch corners" and "sexy glass escape pods" seem silly and unrealistic (albeit typical of such NYT articles) but just basic privacy for showers and dressing ought to be a no-brainer for locker rooms for any age.

<comment><USER9> Fortunately, when I was in high school (1999-2003), guys didn't get naked in the locker room before and after PE.

I don't know what the girls did, because this was years before my transition, but in the guys' locker room, nobody ever took off their underwear. We all swapped our regular clothes and our gym clothes out while leaving our boxers in place. We didn't shower, either, which is something the article mentions in passing (with a link to a more detailed article on the subject).

The only time I ever saw people naked (as much as I tried not to) was on the rare occasions we'd go swimming for gym class.

<comment><USER10> What do you mean, 'fortunately'?. Not only is it disgusting from a hygiene point of view -- especially wrt sweaty teenagers! -- it's also a great way to come to terms with nudity. With porn as the main source of nudity, it's no wonder that so many teens have self-image issues.

<comment><USER11> I think the 'fortunately' was in reference to OP saying she was pre- transition, which I imagine might make a men's locker room experience anxious and painful, and I thank OP for bringing up that perspective because I hadn't considered it while thinking about my own locker room experiences.

I agree with you that showering after wrestling practice forced me to come to terms with nudity, and I'm grateful for the confidence boost that comes from seeing that most men look the same under their clothes. (But I don't think "size anxiety", if you will, is limited to special snowflake Millennials who haven't been naked in front of others... it seems like many men of all ages worry about it and feed into a thriving industry of enlargement scams -- at least judging by the contents of my spam folder!)

</comment></comment></comment></comment><comment><USER12> Having more private locker rooms could have negative psychological side effects on us. At first the naked locker room is weird. However after a while you stop caring. Its almost like a body self empowerment.

I can see the positive & negative side of it though. However sheltering the youth from all negative feedback is not a good thing either. People need to grow up facing adversity.

<comment><USER13> I agree. My first thought reading the article was "can this generation become any more precious?"

Feelings are great, but when you put them in the driver's seat you don't get the chance to see how they can change and how you can grow in the process. It's the difference between being scared of flying all your life and getting past that fear. There's pride in overcoming your fears. You feel less like a victim.

<comment><USER14> Nope. You're conflating two _very_ unrelated trends to prove your pre-existing 'can this generation become any more precious' belief.

For example, people in India are generally opposite of what you might call 'precious'. Parents will very openly call out their kids on their body size, their appearance, there whatever. Young men and womanly will openly (and sometimes, far too much) discuss relative attractiveness of persons -- often admitting that while they themselves are not that attractive, so and so is even uglier, etcetera. They are, I would imagine, not in any sense of the word 'precious' or coddled. The South Asian cultures are also the epitome of what might be considered 'collective' culture, versus the more American individualistic, 'me-me-me' culture.

And yet. People never ever ever get naked. Ever. Not even when they shower. In their private bathrooms. With no one watching. There's joke about how South Asians don't get naked even when having sex (which, I'm told, appears to reflect reality). You would imagine, with people so comfortable with friends and families (note South Asian men have traditionally been verrry comfortable being physically close to other men, including holding hands, frequent hugs, etcetera), they would not be as shy about nudity. And yet they are.

Here's another datapoint: the Japanese, who are still culturally very family- community centered, will get naked at a drop of a feather.

Use your 'precious generation doesn't want to get naked' theory to explain these, and your theory will pass the basic test.

<comment><USER6> The difference here is we're not observing long standing cultural attitudes in millennials, but a very short term shift that defies their parent culture. You're criticising OP for _not_ comparing apples and oranges ~ doesn't make sense. OP's point stands.

<comment><USER14> OP claims to explain the 'shying away from nudity' phenomena using the 'ahh those precious young people' argument. I argue that it's not necessarily the 'precious youth' that is shy of nudity, and I present a cross-cultural proof that shyness of nudity is not necessarily due to his presumed cause.

Comparing Apples to Oranges is exactly what's needed here. By doing so, I'm helping isolate the variable OP suggests affects Apples is not so. Imagine he'd claimed that Apples are suddenly brown because of 'those damn young trees'. If I show that those darned young trees elsewhere don't have the same issue, then there'd be a greater need on the OP's side to actually provide the proof that it's those darned precious young people.

OP needs to provide a greater proof that it's because of those 'precious youth'. I might argue that it's due to increased cultural influence of more body-conservative cultures, or because (ridiculous as it may sound) online nudity is now so common, people don't want their online versions to be identified to offline bodies [which is VERY different from what OP argues].

</comment></comment></comment></comment></comment><comment><USER15> This is definitely improved by the "millenials" => "snake people" translator.

</comment><comment><USER16> I really don't think people at the gym care that much about being nude in the locker room. This reads a lot like a paid-for ad for design services.

<comment><USER17> Anecdotally, in my gym a lot of the younger people shower while wearing underwear.

<comment><USER3> Does this actually happen in real life? Underwear, like cotton things you wear under your clothes normally, not swimwear?

<comment><USER17> Yes, actual underwear. I assume the same one they exercized in. (Amazing life hack: shower in your undies and save $$$ in laundry!)

It amazes me as much as you even though I see it every other day.

</comment></comment></comment></comment><comment><USER18> Millennials? Gyms like Equinox in NYC start at over $600 per month. I see the described designs as adding luxury to wealthy clients, not adding privacy to pee-shy youngins.

<comment><USER3> > Gyms like Equinox in NYC start at over $600 per month

No, they don't. That's ridiculous.

<comment><USER18> You're right, I was thinking of the starting fee. The monthly rate is around $200:

[http://ny.racked.com/2015/1/13/7561179/nyc-chain-gyms- cost](http://ny.racked.com/2015/1/13/7561179/nyc-chain-gyms-cost)

<comment><USER19> That's still a lot to pay per month for a gym membership.

<comment><USER3> It's also New York, and Equinox.

NYSC is basically the Starbucks of gyms in the city, they are middle of the road and everywhere. Their rates are $20-30 a month now.

</comment></comment></comment></comment></comment><comment><USER20> The article didn't mention that this is also being done to short-circuit the overwhelming opposition (using nakedness as a wedge) to trans-people in locker rooms of their identified gender.

</comment><comment><USER21> This was incredibly tart. Some of us younger millennials are not "subsidized" and scrape up the extra money per month for a gym because we are concerned about aging healthfully. I, too, bristled at the writer giving the "special snowflake millennial" dead horse another dryfuck.

</comment><comment><USER22> A large percentage of people who go to the gym go _because_ they have body image issues. No need to make going even harder for them.

</comment><comment><USER23> I'm a Gen-Xer and I went to great lengths to avoid getting naked in front of classmates. I still don't like being naked in front of strangers.

I cringe when I hear stories about swimming naked in high school in the 1950s.

</comment><comment><USER24> I suspect a part of this is due to America's losing of a Spa culture. Korea, Russia, Germany and Scandinavian countries seem to have (comparatively) thriving cultures, which make people more comfortable being naked around each other.

I do agree with the common sentiment here though, what a tired, boring trope to pillory millennials for this quirk. It's hardly ideal that they're becoming more body conscious, but it's quite a great solace to instead appreciate how much they're advocating for tolerance in our society.

<comment><USER25> There weren't any more spas in the US during the 1960s and 1970s, but there certainly were common showers in the locker rooms in high schools and junior high schools. For that matter, there were in the early 1980s, when a race I ran in ended at a junior high school.

</comment></comment><comment><USER26> 1) It started long before millennials. Gang showers pretty much disappeared in anything built after 1990. 2) I hear the military has mostly gone private showers too. Thats how pervasive this trend it. 3) I remember school teacher friends complaining how smelly their students were. They just would not shower after gym class and still dont. These days many schools are so informal that kids just wear athletic clothes all day. 4) Other than sociological phenomena, I dont really care.

</comment><comment><USER9> Having a private changing area is something that could be very good for trans people.

Now if only they'd do this for women's locker rooms, too...

<comment><USER27> I had the same thought. I've hesitated to join a gym for that very reason.

</comment></comment><comment><USER28> As usual, the older generations fear change and subsequently lash out at the younger generations. The cycle continues.

<comment><USER29> I think of myself still as the young generation since I am from the so called millennials. Generally speaking I hate dumb stuff. Giving a fuck about what someone thinks about your body is dumb. Also in the gym - nobody does. Nobody really even thinks you exist and everyone has something better to do. You get, you undress, dress and get out.

Do i fear change - hardly. Privacy requires space. Space means higher rents, which mean higher fees. I personally prefer to see/show from time to time acknowledgment that penises exist outside of porn and giger works and keep the gym experience cheap.

<comment><USER28> > Giving a fuck about what someone thinks about your body is dumb.

Giving a fuck about what someone thinks about you is the natural human condition. That's not really the point, though. Privacy isn't about having something to hide, it's about the right to choose.

But if you personally prefer to stare at dongs all day, you'll still have the internet and politics.

<comment><USER30> > But if you personally prefer to stare at dongs all day, you'll still have > the internet and politics.

It's easy not to stare, you literally control your eyes. You can direct them upward. As a male (assuming heterosexual) do you find it impossible to _not_ stare at women's cleavage? If you can look away from that, and you're attracted to it, then why would looking away from other men's genitals be difficult when you're _not_ attracted to them?

<comment><USER28> That was in response to "I personally prefer to see/show from time to time"

<comment><USER29> Compared to paying for a lot of useless waste of space ignoring a glimpse of a dick is not a big deal.

</comment></comment></comment></comment></comment></comment><comment><USER31> Maybe I have some natural talent (doubtful), but changing under a towel is really easy and convenient, so I really don't see what all the fuss is about. I first learned the "skill" on crowded beaches.

</comment><comment><USER32> > "Old-timers, guys that are 60-plus, have no problem with a gang shower and > whatever," Mr. Dunkelberger said. "The Gen X-ers are a little bit more > sensitive to what they're spending and what they're expecting. And the > millennials, these are the special children. They expect all the amenities. > They grew up in families that had Y.M.C.A. or country club memberships. They > expect certain things. Privacy, they expect."

or maybe the naked old guy in the locker room is a common joke for a reason.

</comment><comment><USER33> The concept of non-sexual nudity is very quickly disappearing in the US. I play on a co-ed hockey team and there is one gal that has no qualms about hopping in the shower with the guys. It is not weird because we all realize that it is non-sexual. That being said, in the main locker room area, I do try to minimize the amount that I expose myself to the other women that are not as comfortable, but that is out of respect for them, not my own fears.

</comment><comment><USER34> I wonder how would they deal with co-ed showers and sauna's in mainland Europe where you can have a 65 year old man steaming next to a 22 year old woman both naked and no one bats an eye.

</comment><comment><USER35> Wait a second. I thought that the millenials were too busy sexting one another, or at least it seems as if that was the current moral panic. Now they're afraid to be seen without clothes?

</comment><comment><USER36> I'm a millennial and had no issues going to a foreign country and getting naked with complete strangers. (Japan, visiting an onsen.)

The problem is with American prudish behavior and helicopter "nudity-is-bad" parenting. I agree with many of the comments below: no wonder people have body/self image issues. The only nudity they see is from porn.

</comment><comment><USER14> As someone's mentioned on Twitter, I'd like a browser extension that replaces "Millennials" with 'people more youthful, more attractive, and more sexually active than us', please!

<comment><USER37> /me raises one eyebrow

Prettier != more sexually active. If you're lucky you'll find this out for yourself, eventually

<comment><USER14> I have, unfortunately, learned this already. STILL makes one not feel better about oneself, haha. But that's for a different day and a different thread on a different forum. : )

Talking of nudity, to all those 'those dang young people' arguments: how does one reconcile young people are getting more comfortable with ONLINE nudity, but less with offline.

We ['millennials'] get hated on either way. There's news of snapchat and sexts, and we're told 'those damn millennials, strutting about their stuffs like they invented sex'. We get shy about nudity, and we're told 'those damn millennials. So precious, can't even stand to be naked in front of other people'. Give us a break, Olds.</comment></comment></comment>


Mathematica Version 12 Released - <AUTHOR> https://blog.stephenwolfram.com/2019/04/version-12-launches-today-big-jump-for-wolfram-language-and-mathematica/ <comment><USER2> I encourage everyone to watch at least one of the many livestreams[1] that Stephen Wolfram did while putting together this release. They changed my perception of Stephen, which I had gotten from the critiques of him that are everywhere on the internet. He is perpetually obsessed with his creation and does not accept mediocrity from his developers; but does so without attacking or belittling anyone, or feeling superior and being condescending, which I thought was his "thing" from what I had read.

He might still have that adolescent ego, and in his blog posts he still comes across as self-obsessed; but in his livestreams he comes across as a decent human.

[1]: [https://www.stephenwolfram.com/livestreams/](https://www.stephenwolfram.com/livestreams/)

<comment> alok-g I have attended a live session from him and also spoken to him.

He did live coding for the demos where for any session of similar complexity the speakers just copy-paste pre-written snippets. It shows both his genius as well as the capabilities of Mathematica.

At one point, his code wasn't doing what he thought it should. His reaction was that of a pure engineer, with no trace of masking or downplaying the issue.

He was asked the same usual questions around open-sourcing, et al. His answer was simple and sensible: That what they are doing cannot be done without a commercial setting. He said that he would rather do a better job for the customers than spend time on anything else.

<comment><USER3> Curiosity as well. At a live presentation I went to a couple of years back, his laptop couldn't connect to my company's projector. The first thing he said was along the lines of, "Fascinating! I've never come across this specific problem before!" Literally every other presenter I've seen facing such an issue would bemoan technology or crack a joke about things 'always' being broken.

<comment><USER4> He actually is interested in this and talks about it in his recent blog post here [https://blog.stephenwolfram.com/2019/02/seeking-the- producti...](https://blog.stephenwolfram.com/2019/02/seeking-the-productive- life-some-details-of-my-personal-infrastructure/)

Search for EDID

> for high-profile, high-production-value events, I have a little box that > spoofs EDID strings to force my computer to send a specific signal, > regardless of what the projector seems to be asking it for.

<comment><USER3> Wow, that was totally unexpected! Thinking back (circa 2013), I wonder what video quality lessons he got out of that particular set-up. From what I recall, we had something awful:

1) Presenter computer plugged into some sort of video capture hub, connected to computer A with video capture card that would composite camera video with slides. 2) Separate computer B running remote desktop into that computer to broadcast to the web. 3) Another computer C, also with remote desktop, connected to the projectors.

<comment><USER5> Serious productions bring all video signals into a switcher [0] and compose their outputs to screens/projectors/capture devices from there. You can tell something like this is in use if there are sensible transitions between different presenters' computers, and the audience doesn't have to watch the resolution-negotiation phase.

[0] [https://www.blackmagicdesign.com/products/atemconstellation](https://www.blackmagicdesign.com/products/atemconstellation)

</comment></comment></comment></comment></comment></comment><comment><USER6> I like Mathematica a lot, and I'm happy to see the client library for Python. What it really needs though is a decent debugger. I'd upgrade today if this release had one.

I think the people at Wolfram and heavyweight Wolfram Language users use Eclipse - which provides support for debugging. Though running with Eclipse in one window and Notebook in another is a bit of a dogs dinner.

In the Notebook environment I found the current debugging functionality to be pretty terrible. The GUI needs to work much more like a modern IDE, to support easy single stepping, inspection and editing of values, so us mere mortals can figure out what is going wrong when results aren't what you expect (and this is half of what programming is, after all).

In fact it might provide that somewhere among the layers of complexity of its meta-debugging whatnots. But I never figured it out, and really I shouldn't have to be fighting complexity when I'm just trying to find out why my program isn't working.

A decent debugger would help us understand the product better than any number of new documentation functions.

</comment><comment><USER7> I wish Mathematica was more affordable. I loved using it as a student, but now I can no longer afford it.

A professional license costs 3500€. Which is probably worth it if you use it every day, but not so much if you just use it just once a month to make a graph or integrate something.

They have a "hobby" license for 350€, which is reasonable, but according to their license it can't be used for anything work related.

I think this is an issue with a lot of professional software. It's priced for heavy users and if you are just an occasional user, you are out of luck.

<comment><USER8> There's always Mathematica for the Raspberry Pi, completely free for personal use! [https://www.wolfram.com/raspberry- pi/](https://www.wolfram.com/raspberry-pi/)

<comment><USER9> Since a full version Mathematica is available on the Raspberry Pi, anyone who is interested has a very inexpensive route to getting a free copy. Mathematica is very functional on the Raspberry Pi and, I think, making the software available as such is very generous of Wolfram. Also for those who cant afford a Raspberry Pi, excellent mathematical functionality is available via the Wolfram Alpha website for free.

<comment><USER10> > those who cant afford a Raspberry Pi

That is very few people who would use Mathematica, no?

</comment></comment></comment></comment><comment><USER11> I really think that Mathematica and Matlab failed to capitalize on the rise of AI and ML in the last decade. Seems like Python is the only go-to language these fields.

<comment><USER12> Julia is a great choice as well: [https://julialang.org/blog/2018/12/ml- language-compiler](https://julialang.org/blog/2018/12/ml-language-compiler)

<comment><USER13> It's a winner-take-it-all situation, though. R is already struggling as a strong second-placer.

What's more: the numerics stack in JavaScript is being modeled after the Python style, so when we're all dragged kicking and screaming to node (UMAP is already implemented in js and that came out when?), those who have cut their teeth on numpy and pandas will be a little less stranded.

</comment></comment></comment><comment><USER14> I know I'm dreaming, Stephen is rather on the opposite side, but if he would open source it all/most of it, he'd be one of the most famous people around. I wonder how he'd move financially wise with that kind of bold move?

<comment><USER15> Seems like he's far from open sourcing it. His team just published a long blog post ([https://blog.wolfram.com/2019/04/02/why-wolfram-tech-isnt- op...](https://blog.wolfram.com/2019/04/02/why-wolfram-tech-isnt-open-source- a-dozen-reasons/)) explaining why they're closed source.

<comment><USER16> Honestly I read most of those reasons as reasons for not being free and community-driven as opposed to not being open-source, and also more as a post- hoc justification than a prediction on what will happen in the future.

As a matter of fact a large part of the Mathematica codebase is inspectable (the part that is written in Mathematica itself) [1].

Disclaimer: I'm a Wolfram employee, but these are my opinions and any decision on open sourcing the language would be way above my pay grade.

[1] [https://mathematica.stackexchange.com/questions/1742/what- is...](https://mathematica.stackexchange.com/questions/1742/what-is-the-most- convenient-way-to-read-definitions-of-in-memory-symbols-when-we)

<comment><USER17> Most of Matlab's source code is visible too and its license allows you to modify its visible source code and share it with other license holders too.

But that's still not enough and that's why I still sometimes work on Octave (although I've been semi-inactive for the past few years). Freedom isn't a spectrum; it really is all or nothing. Unless we're all free all the way, none of us is. It's not fair of me to share Matlab or Mathematica source code with people who cannot have access to the software that runs it, especially from a mathematical and scientific point of view where reproducibility in software should allow anyone to acquire that software.

<comment><USER18> That's not true at all. Lots of the actual Matlab code (i.e. code written in matlab) is available. But none of Matlab itself is. That's where their value is. Octave has fairly easily replicated a huge amount of the mathsy part, but is their GUI or plotting code any good? Not when I last tried it.

<comment><USER17> Prepare to have your mind blown, friend, try `type trapz` or `type cumtrapz` in Matlab and read Mathworks-written m-file code to your heart's content (but if you do, you're disqualified from ever contributing to Octave). Or even try `edit xlsread` to _edit_ that source code.

Less excitingly, read its EULA. I can't find a copy of it because they don't publish it, but I do remember a part that allowed you to modify and distribute Mathworks-written m-code to other Matlab license holders.

</comment></comment></comment></comment></comment></comment><comment><USER19> Mathematica is a great tool. But in my case, there are two huge pain points which limit my use of Mathematica:

1\. Horrible REPL experience. Yes, the notebook interface can display graphics, cool. But I would take Emacs with paredit over it any day. After structurally manipulating Clojure code in Emacs with paredit, using the Mathematica interface is like a throwback to the 70s. You mean I need to balance and match my parentheses myself?! Seriously? Debugging larger expressions is like stabbing yourself in the eye with a dull spoon.

2\. Badly designed data structures, specifically maps (also known as hashes or associative arrays). This is the most universal data structure, that can be used for almost anything, storing mappings from keys to values. Using maps in Mathematica is awkward and feels like doing precision watchwork in boxing gloves. I don't know why this doesn't get more love, after all if all your data fits in a matrix, Matlab is the competing tool, so better data structures would let Mathematica get a nice competitive advantage.

If these two areas were improved, I would likely subscribe to Mathematica and use it much more.

<comment><USER20> My experience has been the opposite of this. Mathematica/Wolfram lang seems to be a much more functional(as in paradigm) language, because of anonymous/lambda functions and "Tables". Even loops are discouraged.

I use it for math/science stuff and I am delighted every now and then when I figure out how to use mappings in a smart and concise way. My coding style in Python changed quite a bit after learning Mathematica. However, I am not a professional coder so take this comment with a rock of salt.

<comment><USER19> Mathematica borrows a lot of good ideas from many languages and paradigms. But programming languages are a spectrum: whatever you consider "good", there is usually something "better" slightly above it, you just might now know about it yet (the Blub Paradox).

Moving from Clojure to Mathematica/Wolfram is a huge downgrade as far as data structures are concerned. And associations are a particularly big failure.

</comment></comment></comment><comment><USER21> It is better to focus on Octave, SageMath, SciPy, and Julia instead. Or to donate corresponding projects instead of buying a license of Mathematica. Of course it is an amazing software, but science, especially the core one - mathematics, should be open for everyone.

</comment><comment><USER22> Might seem dumb but the thing that drove me away from Mathematica are the stylesheets. Mathematica used to have a useful stylesheet that visibly separated input, output and text content. But at some point, I think version 8 or 9, they removed that stylesheet. All the remaining stylesheets either don't properly distinguish input and output, or look like crap.

I lost interest in reinstalling that stylesheet whenever I had to install Mathematica on a new system and consequently, I lost interest in Mathematica. Wish they'd reintroduce it as an easily selectable default sheet. Jupyter has a much better default stylesheet but Jupyter lacks ease of use and functionality.

Edit: The stylesheet I'm talking about was called NaturalColor and there even is a stackexchange thread about its disappearance. [https://mathematica.stackexchange.com/questions/17323/did- ma...](https://mathematica.stackexchange.com/questions/17323/did- mathematica-9-remove-some-previously-available-stylesheets)

</comment><comment><USER23> I know Lisp and more specifically, Lisp machines, have greatly influenced Mathematica but when I read that Wolfram is using Mathematica as a computer shell I can't help but think that he's taken the Symbolics Genera paradigm and ran with it. I'm certainly happy about that since nobody else seems to have realized how well it fits in with the current era of having to deal with ever- increasing information flows in disparate domains.

But I'm also regretting that Mathematica is not opensource since I'm convinced this constitutes a great barrier that the vast majority of programmers today will not attempt to cross.

</comment><comment><USER24> Really excited to try the new SQL interface. The old one was less than pleasant to work with.

The Unity stuff is kind of unexpected and I'm curious to try that out too.

...Now I just have to see if my student license lets me upgrade...

<comment><USER16> > Really excited to try the new SQL interface. The old one was less than > pleasant to work with.

Cool! I hope people find it useful, that's where most of my past year and a half went :)

<comment><USER25> Maybe you can't comment but it was neat (and huge time saver)to see something like sqlalchemy's reflection.

<comment><USER16> Actually we use sqlalchemy internally for the backend-specific code generation

</comment></comment></comment></comment><comment><USER26> Mathematica is really one of these tools I have zero use for but wish I did. It's such an amazing accomplishment.

</comment><comment><USER27> > nowadays the vast majority of what the Wolfram Language (and Mathematica) > does isn't what's usually considered math

I wonder how much of actual Mathematica use is outside of mathematics.

The new AsymptoticSum and AsymptoticSolve functions sound useful though!

<comment> arnoud-buzing It's used in more places than you'd think, e.g. Alexa:

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

<comment><USER28> That's Wolfram Alpha.

<comment><USER16> And what do you think wolfram alpha technology stack is built on?

<comment><USER28> Yeah, but at that point, we're already another step removed...okay, partial credit.

</comment></comment></comment></comment></comment><comment><USER28> Still don't understand why they don't have a good JSON REST API story. It's like they have no expectation of Mathematica ever being useful in a server based production environment.

<comment><USER16> Care to elaborate? I was one of the developers behind APIFunction and GenerateHTTPResponse. If you are you talking about the ability to deploy a REST API to our cloud I think you are wrong and I'd be happy to show you how.

<comment><USER28> I don't want to use the Wolfram cloud. I have no interest in tracking number of monthly API calls. Say I wrote a nice notebook that does a bunch of useful things. What's an easy way to deploy it on a server and connect to it with a REST API?

It takes me a few minutes to do it with Python using Chalice and AWS Lambda.

I'm also not a fan of the primitive URL query syntax. Why isn't there a way to generate an OpenAPI? A schema?

<comment><USER16> I absolutely feel your pain. As a matter of fact I've been lobbying internally for a refresh of webMathematica for years. Maybe something is going to come out in the near future. Please hold on :)

<comment><USER28> I was hoping there would be a big API rethink in this area for version 12 :-(

What I don't get, is that long term, making Mathematica useful for actual server based production environments would open up an order of magnitude larger revenue stream. Yet all I see is a fragmented, difficult to use/understand/license environment. There seem to be a dozen, slightly different initiatives, some basically unmaintained.

I mean, what the heck is all this?

[https://www.wolfram.com/engine/](https://www.wolfram.com/engine/)

I should seamlessly be able to prototype something through the notebook interface, and then deploy it, in a standard generic way, and on a server I control, that can be consumed by anyone who can read through a OpenAPI (with auto generated docs and schemas).

Setting Alpha aside, what you seem to offer is a) a prototyping/notebook environment, like Jupyter (yes, I know you came first) b) a programming language tightly coupled with a really nice stdlib

The programming language itself, realistically, has no use outside your libraries. And there seem to be very little third party Mathematica libraries. The notebook environment is only useful for prototyping.

So the market you should want to grow into, is, "How do we allow people to build something really easily, and then deploy really simply, in their own server/DB environment, with reasonably standard API interfaces?".

The attempts to integrate with Python are a good start, but seem to be more focused on the prototyping aspects.

Something like [https://www.django-rest-framework.org/](https://www.django- rest-framework.org/) should be built in.

<comment><USER29> Wolfram Language lacks many open specifications that a usual high-level programming language should expose to their users, such as stdin stream, concurrency, memory model and so on. To some extent, their toolchain and design pattern are behind the state of the art, while the leaders are confident about the design, cf. [https://blog.wolfram.com/2019/04/02/why- wolfram-tech-isnt-op...](https://blog.wolfram.com/2019/04/02/why-wolfram-tech- isnt-open-source-a-dozen-reasons/). Hoping they are pushing this great software forward to another 30 years.</comment></comment></comment></comment></comment></comment>


IPhone remote - <AUTHOR> http://online.wsj.com/article/SB10001424052748703292704575393202060995806.html?mod=WSJ_hps_MIDDLESixthNews

<comment><USER2> These are neat, but the whole dongle thing kills it for me.

I've been playing with a RedEye remote <http://thinkflood.com/products/redeye/> on and off since they first shipped. The product has come a long way in terms of working out bugs and adding functionality. With the added bonus that since it's a dedicate device with Wifi, I can now send IR signals from my Indigo home automation system to the RedEye with a little bit of applescript hackery.

<comment><USER3> Isn't it a little (over)expensive? It costs more than an iPod Touch, even.

<comment><USER2> Most decent home theater stuff tends to be on the high-side of the price curve, especially when you get into speciality stuff like this.

For what is most likely a $20BOM, yes it's expensive. Compared to other multi- function remotes, and especially when compared to other IR devices that enable you to interact with them programmatically, it's cheap.</comment></comment></comment>