Go and Dogma - <AUTHOR> https://research.swtch.com/dogma <comment><USER2> I think the reason you have those kinds of holy wars among users of a particular technology, whether it's an OS or a gaming console or a programming language, is network effects.

All of those things are more valuable the more people that use them, and if you've invested money or time into any of them, you have more of a pay off on your investment if more people also use them. So you might feel strongly incentivized to defend your platform of choice while attacking competing platforms, even if another platform might be marginally better, but not enough to justify the switching costs.

If you're a language developer, you have dual incentives-- one is to get people to use your language, which would seem to encourage you to engage in holy wars, but the other is to _be good at developing languages_ which requires you to think objectively about what you and other language developers are doing, so even if you're publicly defending your choices, you should be open to the idea that another way might be better.

<comment><USER3> > I think the reason you have those kinds of holy wars among users of a > particular technology...is network effects.

I find the holy wars are usually fueled by "fans" \-- people less invested and less knowledgable in the topic. This is true of movies, bands, sports teams, phones, computers and cars.

The fact is if you work on the tech you appreciate that there are tradeoffs and know what your overall objective is (so are less likely to argue about things that don't get you there). Musicians tend to get along -- did the Beatles hate the Stones (OK, the Stones released "Let it Bleed"). I doubt Mark Hamill hates Star Trek or Shatner Star Wars. The catholic pope meets with the grand mufti of Jarusalem. Obama and Bush talked a lot in 2008 and 2009.

It's like the joke about academia being so cutthroat as the stakes are so small. Holy / Flame wars erupt among those on the periphery at best.

<comment><USER4> > I find the holy wars are usually fueled by "fans" \-- people less invested > and less knowledgable in the topic.

There seems, IME, to be a sizable contingent of people who have invested heavily in a particular technology and are threatened, in their own market value, by threats to its distribution, in most technology flamewars. They aren't necessarily less knowledgeable, but frequently prefer depth in a platform to breadth across platforms for developing their own skill set, which creates a strong incentive to promote the platform.

</comment></comment></comment><comment><USER5> Language designers are indeed often un-dogmatic about the language. The tool builders in Go however have built a very structured distinct practice of using Go that forces one to remain in dogma. Go is rather unique in how much Go- tooling-specific tooling knowledge one has to have to even begin writing code, owing to it's deeply inbuilt sense of workspaces (GOPATHs) and it's strict directory structure.

I really think this is a great post, and emphasizes a strong danger in adopter culture. But I do also think Go, in particular, is rigorously dogmatic _in it 's tooling._ To good effect, in that anyone can come to any project and understand some basics, but the workspace decision is really hard to reconcile with the project-by-project view of the world that most language tooling assumes.

<comment><USER6> _Go is rather unique in how much Go-tooling-specific tooling knowledge one has to have to even begin writing code_

There's not much of that. I think that most people who are put off by that are actually angry that Go didn't affirm their own prejudices.

</comment></comment><comment><USER7> There are a lot of decisions in Go that I find very distasteful. It's frustrating because Go comes very close to being something I'd want to use, but falls short in all areas.

It has this great automatic interface system! Amazing! Except it also has "primitive" types that can't participate, so many of my functions have to take interface{} instead which is pretty much void*.

It can dispatch to different functions based on the argument types! It will even automatically switch to the non-pointer type if you pass a pointer to a non-pointer function. However, you can't write a pointer and non-pointer version of the same function. Also why are we using pointers to represent reference mutability and optionality these days? Other languages have maybe/option which handles optionality much better.

Speaking of not having maybe/option, every other line of code is "if (err == nil)" and there's no way to abstract this out. Give me `option` dammit. Exception handling exists via panic, but it's a little different than you're used to and the language designers like to pretend it's not exception handling at all.

There are built-in functions that use generics, but I'm not allowed to write one? Hypocrites.

You have to name things starting with a capital letter to make them public. Who came up with this convention? It is not shared by any language ever. It also gets extremely annoying when you want to serialize json, serialize a protocol buffer, or do a database query. Name your struct members in lowercase and those libraries won't be able to see them, but name them in uppercase and the output will be in the wrong case. Instead, you have to "annotate" those struct fields repeatedly for every library you're going to pass them to. You also have to manage "naming convention" systems that translate between the two names, and these conventions are never the same between two libraries.

<comment><USER8> > It also gets extremely annoying when you want to serialize json, serialize a > protocol buffer, or do a database query.

This in particular is maddening when learning go. I lost hours to this when deserializing JSON.

<comment><USER9> Helpful tool for this situation: [https://mholt.github.io/json-to- go/](https://mholt.github.io/json-to-go/)

</comment></comment></comment><comment><USER10> I completely agree with the author, though slightly surprised to see it come from the Go community, which has seemed like one of the more dogmatic languages. (E.g. all the "you don't need generics" arguments over the years.)

<comment><USER11> If you follow the history of that particular issue, you'll see that the Go team's (official) view has always been that there are tradeoffs involved, and that none of the existing proposals for implementing generics are sufficient improvements over the status quo. Generics are not free, they bring a lot of baggage with them. And I think most people will agree that Go has achieved a lot of success without them, so perhaps most use cases _don 't_ require generics after all.

<comment><USER12> > Go has achieved a lot of success without them

This is a dangerous and slippery slope to engage on.

Java was also extremely successful in 2004, before it supported generics. Yet you'd be hard pressed to find a Java developer who thinks that generics were not overwhelmingly beneficial to the language, and probably one of the main reasons why Java is even more dominant and powerful today than it was pre- generics.

<comment><USER13> Generics for a language with a common base class object are a category error.

Java's current popularity is due to Android, not the bloated corpse of enterprise Java.

<comment><USER14> Types like Object and Comparable<T> allow heterogeneous collections and algorithms, which are occasionally useful even in an otherwise statically- typed language. Think of it as a set of types where otherwise you would have required boxing everything within a single type and eventually reimplementing the type system.

If Java had generics from day one, they could have put methods like equals and hashCode in interfaces that some classes don't implement, instead of passing static type checks and then blowing up at runtime because you did something that never made sense.

</comment></comment></comment></comment></comment><comment><USER15> I think the Go team probably wanted to avoid the mess that C++ has become, which to some extent has affected Scala as well. When a language tries to be all things to all people, it becomes cluttered and inconsistent. It can also become incompatible with previous versions in ways that prevent people from upgrading, as we have seen with Python 3.

However, the Go team has gone further than most in their rejection of changes, and I think it's reached the point where it hurts the adoption of the language. When I write Go code, I feel like Rob Pike is standing behind me telling me to do things the way he likes them done, or not at all.

There are plenty of examples of languages that have navigated this problem better than Go. Rust and Haskell come to mind immediately. C# and F# should also get more credit than they do for handling this kind of thing gracefully. Even Java 8 has incorporated many of the things people found attractive about Scala, without making them mandatory or alienating established developers.

<comment><USER16> > I think the Go team probably wanted to avoid the mess that C++ has become,

Ultimately, people will write a Go++ because the language isn't good enough. That's not avoiding C++, that's forcing people to recreate C++ .

<comment><USER17> The solution "go generate" reminds me of the class generating tools that Borland shipped with their C++ compilers, before they added support for templates, back in the MS-DOS days!

</comment></comment></comment><comment><USER18> But this is not how languages are designed and even how Go was designed, where three people had to agree on features, instead of making "engineering trade offs". And this was a decent decision for familiarity and making the language more approachable, even though it was all dogma. The reason is simple: languages follow the same rules as user interfaces in general and as in user interfaces first thing that comes to mind is usually a better choice, than something overthought by a non-professional in UX, because you have it engraved in your brain by your most often previous experience and therefore it's very likely that many people do too. And having multiple people to agree basically supercharges that.

But then you still have to follow the rules of the UX, consistency, flexibility, all that, and none of the languages I know of are serious about that. It's all just dogma everywhere, or "engineering trade offs" if you like. We don't have much dogma only when it comes to performance, since it's the only thing easily measurable.

</comment><comment><USER19> I like generics, but why can't there be a language that doesn't have them?

If I want a simple language, no generics I go with Go, for everything else I go with Rust and Swift.

Not every language has to have generics, when I want to use them, I simply switch languages.

There is something nice about being able to keep Go in your head and I think that it has shown that there is a market for such a language.

<comment><USER16> > I like generics, but why can't there be a language that doesn't have them?

Python,Ruby and Javascript don't have generics ... because they are dynamically typed. Go has generics, maps and array are container types, you just can't define your own. To say Go has no generics is stupid, it just doesn't allow you to define your own. Instead you can use catch all interface{} everywhere like dynamically typed languages.

> Not every language has to have generics, when I want to use them, I simply > switch languages.

This statement makes no sense at all.

<comment><USER19> > Go has generics, maps and array are container types, you just can't define > your own. To say Go has no generics is stupid, it just doesn't allow you to > define your own.

That's usually what is indeed meant by the statement "Go doesn't have generics", maybe it should be "Go doesn't have user-defined generics", but I assume most people can infer that. I really hate the recent trend of having to spell _everything_ out.

> This statement makes no sense at all.

Can you be more specific? What doesn't make sense _at all_ in saying that when I have a simple problem that is unlikely to benefit greatly from a more sophisticated type system, I reach for Go, otherwise I use a different language?

</comment></comment></comment><comment><USER20> This article brings to mind the challenge of enforcing empathy in an engineering community. Software and other technical systems are coldly precise and unambiguous. People, on the other hand, are rarely that precise and often illogical without significant effort/investment into forcing themselves to be rigorous about a though or claim.

I think it's too easy for community members to leave opinionated outsiders with a bad taste in their mouth when they approach your system with opinions and tendencies that were built up in other systems with different circumstances and assumptions. The kneejerk response is "well, you're wrong, we don't do it that way here," hence the dogma.

It takes serious effort to fight that instinct, and not everyone is good at fighting it... especially when some community members suffer from the same problem as the outsider, but with the affinity being toward their own system. This is a hard problem to solve...

It's a good thing this article was written and there is a willingness to at least acknowledge the problem in the Go community. It contrasts to the style of say, Linus Torvalds, whose approach is basically "empathy? fuck that, I'd rather call them names" :-)

</comment><comment><USER21> This reminds me of Perl's motto:

 _There Is More Than One Way To Do It_.

Regardless of the community, we generally all strive for the most _efficient_ way to accomplish a goal, but the definition of "efficient" can vary: execution performance, elegance, ease of developing, ease of integrating into X... Often, one or a few leading solutions emerge but it's tempting to take those pragmatic optimums and turn them into law—or worse: follow them for the wrong reasons.

It's a good idea to know _why_ you're using a particular design tradeoff, and remain flexible to change if you find your constraints have changed. Some environments make this interchangeability easier than others but there's almost always a choice.

</comment><comment><USER22> > _(for example both Go and Haskell need some kind of "green threads", so > there are more shared runtime challenges than you might expect)_

That's a very generous definition of similarities, as tons of languages have green threads, even Java/JVM had them initially (and still has them in various implementations over native threads). Could even add that most languages also have GC, some type system, io, modules, etc.

<comment><USER23> Name a language having a compiler that most similar to Go in the threading domain, e.g.:

compiles to machine code

have green threads

use non-blocking IO in the background

have parallel runtime

Haskell is the first that comes to my mind. (I guess that Common Lisp is a safe bet too, as it had everything for ages before it was cool;), but I'm not familiar with that domain to be sure) Erlang have everything except machine code compilation.

What else? I guess the rest is from the newer, lesser known or experimental languages. So is there anything more popular than Haskell?

<comment><USER17> Active Oberon, initially developed in 1996.

\- compiles to machine code, check. A whole operating was written in it, AOS (aka BlueBottle).

\- have green threads, check. That is where the name Active comes from. It makes use of tasks.

\- use non-blocking IO in the background, check. Tasks are used everywhere across whole OS.

\- have parallel runtime, check. The whole OS makes use of parallelism and its compiler, Paco, does compilation of modules in parallel

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

[http://www.ocp.inf.ethz.ch/wiki/Documentation/Front](http://www.ocp.inf.ethz.ch/wiki/Documentation/Front)

[http://www.progtools.org/article.php?name=oberon&section=com...](http://www.progtools.org/article.php?name=oberon&section=compilers&type=tutorial)

<comment><USER24> I absolutely love how in PL discussions you and nickpsecurity always have examples of random languages to fit every niche.

<comment><USER17> Thanks! :)

I majored in systems and distributed programming, and had the luck of having a set of teachers that cared we should know the history of computing, making us curious about our past and how those designs could influence current ones.

So the habit of hunting and reading papers stayed with me, even if during the day I just do boring enterprise consulting.

Many times they are more entertaining than reading newspapers on the daily commute.

<comment><USER24> You should blog about this stuff if you don't already and have the time :)

</comment></comment></comment></comment></comment></comment><comment><USER25> The problem is when we form Groups or Tribes based around something we fall into the trap of just whitelisting or blacklisting things. This is a natural human algorithm to simplify things in our brain and make our decision processes more efficient.

A way to fight this is to make sure you belong to more than one language community. Then you'll be forced to not make such a simplified model.

</comment><comment><USER26> /offtopic

"Go" is such a poor name, both for a language and game, because they collide with the English word, it's impossible to perform targeted search or sometimes even to know what an article is about.

Some TV shows like "24" suffered from the same fate. On reddit the game of Go is represented by the Korean "baduk", probably to escape the confusion cone.

<comment><USER11> Agreed, but that is a technical problem that can (and should) be solved. For example, "C" and "C++" are even more unfriendly terms for search engines, yet Google handles them just fine:

[https://www.google.com/search?q=c+stdlib](https://www.google.com/search?q=c+stdlib)

[https://www.google.com/search?q=c%2B%2B+stdlib](https://www.google.com/search?q=c%2B%2B+stdlib)

<comment><USER27> When you feed them unambiguous queries like that, yes. "stdlib" is a very unique word specific to the domain of programming. Things get trickier with terms that have more overlap, and irrelevant results tend to creep further up the page.

<comment><USER28> that ambiguity is hardly limited to program languages.</comment></comment></comment></comment>


Data logging satellite-relaying albatrosses locate illegal fishing vessels - <AUTHOR> https://www.pnas.org/content/early/2020/01/21/1915499117 <comment><USER2> Please don't do this. You'll cause a reverse-cobra-effect once this becomes widespread, where illegal fishing ships shoot seagulls on sight.</comment>


The Shame of Our Prisons: New Evidence - <AUTHOR> http://www.nybooks.com/articles/archives/2013/oct/24/shame-our-prisons-new-evidence/

<comment><AUTHOR> Interestingly, and contrary to the stereotype of most prison rape being perpetrated by proverbial "bunkmates":

 _The new studies confirm previous findings that most of those committing sexual abuse in detention are corrections staff, not inmates. That is true in all types of detention facilities, but especially in juvenile facilities._

<comment><USER2> That is so disturbing it exceeds my meager vocabularies ability to adequately to express my disgust.

<comment><AUTHOR> Yup. Going by their numbers, that's easily tens of thousands of serial rapists / harassers on the government payroll. Well beyond the scale of say, what the Catholic Church has pulled off in recent decades.

Main difference being, of course, that our society tacitly believes that if you're in jail:

(1) you must have done something wrong, otherwise you wouldn't be there.

(2) therefore, on some level you pretty much deserve whatever happens to you there, right?

(3) and if it does you can go ahead and whine about it, but we're not going to scratch our heads over what happens to anyone sorry enough to land find themselves in the 2.3 million-strong population of our internal gulag (ah, "correctional") system, anyway.</comment></comment></comment>


The First Six Books of the Elements of Euclid (1847) - <AUTHOR> http://publicdomainreview.org/collections/the-first-six-books-of-the-elements-of-euclid-1847 <comment><USER2> Byrne's book is lovely and wonderful, I highly recommend the modern reprint: [http://amzn.com/3836544717](http://amzn.com/3836544717)

But it only covers the first part of Euclid's Elements, and even in the first 6 books the original text and drawings can also be helpful. I recommend this Green Lion Press edition to anyone looking to study from Euclid – [http://amzn.com/1888009187](http://amzn.com/1888009187) – which is an amazingly well printed and constructed book, an incredible bargain for the price.

</comment><comment><USER3> Communicates effectively by incorporating the actual physical shapes and lines within the text in different colors, rather than assigning letters to each element.

</comment><comment><USER4> Don't miss proposition 47 (XLVII), the Pythagorean theorem.

</comment><comment><USER5> I have the Taschen Books version. Super beautiful book.</comment>


Indoor Atlas' API is now live [beta] - <AUTHOR> https://www.indooratlas.com/

<comment><USER2> From the FAQ:

        What is the positioning accuracy of IndoorAtlas?

        The accuracy depends on the building's magnetic field information. When
        off-the-shelf handsets are used, IndoorAtlas' accuracy is typically less than
        3 meters (10 ft) at 90% confidence level which is unprecedented in the industry.</comment>


G1 Garbage Collector in Latest OpenJDK Drop - <AUTHOR> http://jeremymanson.blogspot.com/2008/11/g1-garbage-collector-in-latest-openjdk.html <comment><USER2> I am incredibly happy to see the progress coming to the JDK since it has gone open-source. I'm not a fan of Java the language, but the whole ecosystem benefits from the changes.

<comment><USER3> Let me guess: This GC was written completely by Sun employees and would have been written even if Hotspot wasn't open source.</comment></comment>


Facebook's GraphQL spec doesn't grant a patent license - <AUTHOR> https://email@example.com/using-graphql-why-facebook-now-owns-you-3182751028c9 <comment><USER2> Software patents are out of control. Something should be done. And that something is not to unbalance the entire battlefield in favor of Facebook. Facebook is not looking out for the health of the ecosystem any more than they are for the freedom, independence, and privacy of their users. Large tech companies are creating environments that will stifle the ability of small companies to build new things or compete.

<comment><USER3> Agreed it's out of control and a recent code generation patent is another example [1].

Anyone can share experience in opposing a patent? [2]

[1] [https://twitter.com/fehguy/status/900736518884425728](https://twitter.com/fehguy/status/900736518884425728)

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

<comment><USER2> I don't know. Put more pressure on tech companies to actually do something about the problem? Facebook is not really doing anything about it except making the field even more uneven (at the detriment of anyone who might have a patent that Facebook could infringe on).

</comment></comment></comment><comment><USER4> Apparently the author believes the Facebook patents only applies in the context of a social network.

<comment><USER5> though it also suggests that a 'social-networking system' can be interpreted very broadly

<comment><USER4> Yes - I feel the article's interpretation is a little overblown and social network refers to more of a Facebook competitor than anything else.

Github for instance uses GraphQL and they have a 'social' element since there are users who can post on forums and message each other. Does the author believe Github is infringing the patent? I feel that would be taking it too far. It would be interesting to hear Github's view on the article

<comment><USER6> _social network refers to more of a Facebook competitor than anything else_

When it comes to enforcement, it only matters what one expert witness "of ordinary skill in the arts" says. If Facebook can hire someone who claims to be of ordinary skill and says that Github is a kind of social network, a jury will likely agree.

<comment><USER7> We just had an article headline today that said Email is the largest social network.

I find it very plausible that if push came to shove a decent lawyer would be able to convince a jury or a judge that Email is indeed a social network.

</comment></comment></comment></comment></comment><comment><USER8> I'm guessing someone is going to try to argue that all graphs are social networks as opposed to the opposite using very vexing vernacular.</comment>


The Illustrated GHC [pdf] - <AUTHOR> http://takenobu-hs.github.io/downloads/haskell_ghc_illustrated.pdf

<comment><USER4> As someone interested in functional programming and compilers, I recently tried to use GHC's intermediate output. However, I got a little disappointed about the documentation that's available for compiler writers. From what is essentially a research compiler, I'd expected a little higher standards, also in the department of available tools, and examples. In other words, the experience came too close to what I would call "hacking".

Furthermore, the "Core" language is, I believe, for many purposes, more complicated than necessary (e.g., it is typed). It would be nice if there were a simpler alternative, e.g., for small projects.

Of course, I could be wrong about this (perhaps I looked in the wrong places), but this is just what I noticed.

Besides this, of course, Haskell is a cool language, and GHC an awesome compiler! :)

<comment><USER5> > As someone interested in functional programming and compilers, I recently > tried to use GHC's intermediate output. However, I got a little disappointed > about the documentation that's available for compiler writers. From what is > essentially a research compiler, I'd expected a little higher standards, > also in the department of available tools, and examples. In other words, the > experience came too close to what I would call "hacking".

We don't really emphasize or support people using the intermediate language in an external way very well. They're parts of the compiler that are intimately and deeply tied to other internals elsewhere, and it's not really an explicit design goal that those components be reusable in a general way.

Now, people do use GHC for this (years ago I even helped write a compiler that transformed GHC's core language into a whole-program IR that was compiled to C), and we do have an API you can use to leverage the compiler, but overall the amount of people using it for things like this, vs using it for things like dynamic loaders or typechecking utilities (such as ghc-mod) are very small.

In fact, just last year we removed 'External Core' from GHC, which was a way of serializing the Core representation to disk. Why? Because it was actually broken for close to two years I think, and nobody ever really complained or fixed or wanted to support it! And after a discussion, we didn't want to support it either. It has been used, but when it bitrots that bad, I think it's clear this isn't one of the largest driving use cases for the compiler.

That said, we could improve the documentation a lot, and add a lot more examples. But I don't think there ever has been (or probably will be) a huge push to make the core IRs reusable in an easy way. It's simply not a high priority design goal.

> Furthermore, the "Core" language is, I believe, for many purposes, more > complicated than necessary (e.g., it is typed). It would be nice if there > were a simpler alternative, e.g., for small projects.

The Core language being typed is a good thing for GHC - it makes it easy to turn on an internal typechecker and determine if the compiler has produced invalid IR, your optimization pass did, etc. It adds a lot of safety to your produced programs when you can ensure they type-check in a sane way.

This component, along with the core linting passes, have likely caught an _innumerable_ amount of optimization and desugaring bugs over the years, while being extremely low cost to support and use. Overall, typed Core has been a very huge win for GHC, and I don't ever see us adopting a different route. In fact, it's planned for our Core language to get an even fancier (dependent) type system not far off in the future. :)

<comment><USER4> I agree that the number of potential users for this particular use of GHC is small. But as with everything, it are the small groups of people that produce the most interesting things ;)

I don't think an external format (serialized Core) is even necessary. Just a well-documented API would be nice. I'm hoping that somebody could write a set of examples, and put those in a test-suite so that it keeps getting updated whenever something breaks it.

I also agree that typing is extremely useful. But for small research projects, it can get in the way of the actual goal.

<comment><USER5> Yes, I suppose my larger point was more to illustrate that nothing is free. GHC is software like any other piece of software and it has a lot of competing constraints we must balance.

If the cost of supporting reusable IRs like you want is high in terms of LOC and needed changes, but the amount of people who will leverage that work is incredibly small, it's honestly not clear to me if making that change and maintaining it is sensible or worthwhile. It might be worth it purely from a code cleanliness standpoint if it did a lot of cleanup, but that's not immediately clear either. We have to maintain everything people submit to us, presumably forever - the barrier to entry for large changes should be high, and well-motivated.

It is similar with external core; it was several extra thousands of lines of code throughout the compiler that was rarely - if ever - used by anyone. Did a few people use it to do cool work - for example, by writing the Intel Research Haskell compiler? Absolutely, and Intel's results were incredible - but that does not mean it's worth keeping that ball of code around for that one use case.

I'd actually argue keeping it for that one case would be a terrible decision for everyone, and when I deleted that part of the compiler, Intel's compiler lingered in my mind, as it was a user. But the fact is nobody was maintaining, submitting patches or using it in a modern GHC, including them - so I rm -rf'd it.

GHC is a research compiler, but it is also a production compiler for many users, and a project several dozen of us work on.

So while I'm sure your work is incredibly interesting (most of our large features come from people doing interesting research, so I understand your plight!), this really doesn't mean large, sweeping changes on our part - <USER2> your one case - are very worthwhile at all for us. But maybe you don't need sweeping changes, either!

(Of course, it's impossible to say how many people _did not_ use GHC because of these constraints that otherwise were unsuitable for their projects - <USER3> we have to draw a line somewhere and balance our own needs vs those of others.)

> Just a well-documented API would be nice.

To be clear - what API are you exactly envisioning? An API that makes it easy to construct Core or STG programs using GHC's ASTs, and then feed them through the rest of the compiler? Or an API to do things like construct and manipulate the same core representation GHC uses, to later do whatever you want with perhaps with a separate tool?

It sounds like this is something you could tackle with a library that wrapped the GHC API. The problem is the Core representation in GHC is very prone to change, so I'm not sure there's any sane way to really maintain things like API stability between versions. But you also might not need that - just a simple API around "GHC Core version X.Y.Z" to build programs may be enough.

We could distribute such a library with GHC, but this sounds like something easily doable out-of-band first, at least.

Either way, something like thisI can surely see the need for. Where it should live is a different question.

> I also agree that typing is extremely useful. But for small research > projects, it can get in the way of the actual goal.

Yes, but again, GHC's internal needs and developer needs outweigh those of random small research projects that might use it - the fact that it makes some kinds of work slightly harder is unfortunate, but in the grand scheme of things, this isn't really a concern at all for any of us, and likely never will be. There's no free lunch, I'm afraid.

<comment><USER4> I would be mostly interested in reading the Core or STG representation, so I can apply transformations to them. Of course, it would also be nice to generate intermediate code from scratch, but that is something which is not forming an obstruction at this point (as it would be easy to just generate Haskell code instead).

I'm not looking for high-performance solutions, just some tools to make researching new ideas a little simpler.

To give you some idea about the things I'd like to do:

* Transforming programs into "incremental programs", so they run faster on changing inputs.

* Automatically translating functional data-structures to other languages (C++)

* Sending code over the network

I tried using the GHC parser directly, but that route turned out to be too much work (too many cases to handle). Then I looked at Core, but the documentation was lacking or not up to date.

So, from where I stand, the internal documentation is the biggest problem, and, according to good software engineering practices, there can be no excuse for having no good internal documentation :)

Besides just plain documentation, a tutorial with examples would be nice, but I can understand if that is not a priority.

Anyway, keep up the good work :) I'm happy with GHC as it is. I just wished it was a little more "open".

</comment></comment></comment></comment></comment><comment><USER6> Fantastic in depth PDF. While lacking the talk (as others have mentioned) I was able to determine in large strokes what's going on at the lower layers of Haskell. I particularly found the FFI interface section (ex. the breakdown of a call to getLine) extremely interesting/useful.

While I think real understanding will come if/when I have to actually wrestle with the lower layers of GHC (or am contributing to the source code or something), this served as a great overview, and a quick explanation of how Haskell "really" works.

</comment><comment><USER7> This looks great, but needs some interpretation, like an accompanying talk. I got lost in box-and-line diagrams which I did not know how to interpret.

An introduction to GHC which I found helpful is its AOSA chapter: [http://www.aosabook.org/en/ghc.html](http://www.aosabook.org/en/ghc.html)

</comment><comment><USER8> I haven't looked at the source; is GHC using _both_ C-- ([http://www.cminusminus.org/](http://www.cminusminus.org/)) and LLVM?</comment>


It takes now 53 weeks salary to earn same as 30 weeks in 1985 - <AUTHOR> https://twitter.com/oren_cass/status/1230505649794166785 <comment><USER2> >How to get higher wages? How to get lower costs?

Gee I wonder...

[https://www.epi.org/publication/ceo- compensation-2018/](https://www.epi.org/publication/ceo-compensation-2018/)

>CEO compensation has grown 940% since 1978 Typical worker compensation has risen only 12% during that time

>What this report finds: The increased focus on growing inequality has led to an increased focus on CEO pay. Corporate boards running America's largest public firms are giving top executives outsize compensation packages. Average pay of CEOs at the top 350 firms in 2018 was $17.2 million—or $14.0 million using a more conservative measure. (Stock options make up a big part of CEO pay packages, and the conservative measure values the options when granted, versus when cashed in, or "realized.")

>CEO compensation is very high relative to typical worker compensation (by a ratio of 278-to-1 or 221-to-1). In contrast, the CEO-to-typical-worker compensation ratio (options realized) was 20-to-1 in 1965 and 58-to-1 in 1989. CEOs are even making a lot more—about five times as much—as other earners in the top 0.1%.

>From 1978 to 2018, CEO compensation grew by 1,007.5% (940.3% under the options-realized measure), far outstripping S&P stock market growth (706.7%) and the wage growth of very high earners (339.2%). In contrast, wages for the typical worker grew by just 11.9%.

<comment><USER3> How do you recommend we go about telling someone they cannot earn what they can convince someone to pay them, or that a company/board cannot pay the CEO as much as they're willing to?

<comment><USER4> "You can pay your CEO whatever amount you want so long as it isn't 50 times more than the lowest hourly wage times 2080 that you pay any employee of yours." ... Queue the gig economy...

<comment><USER5> "You can pay your CEO whatever amount you want so long as it isn't 50 times more than the lowest hourly wage times 2080 that you pay any employee of yours, any contractor of yours, or any of their subcontractors."

<comment><USER6> At a $10/hour minimum wage, that's a range between $20,000/year and $1,000,000/year.

<comment><USER7> Which is much better gap than $20,000/year and $2,284,044,884/year. [1]

1: [https://www.insidermonkey.com/blog/10-highest-paid-ceos- in-t...](https://www.insidermonkey.com/blog/10-highest-paid-ceos-in-the-world- in-2019-796222/10/)

</comment></comment></comment></comment></comment></comment><comment><USER8> That is a really good thread. I hate how clunky reading long stuff is on Twitter, but, that's beside the point.

The author wrote the same content here with more room to breathe: [https://americanaffairsjournal.org/2020/02/the-cost-of- thriv...](https://americanaffairsjournal.org/2020/02/the-cost-of-thriving/)

<comment><USER9> Important points from the link:

"I propose the following Cost-of-Thriving Index (COTI): the number of weeks of the median male wage required to pay for rent on a three-bedroom house at the 40th percentile of a local market's prices, a family health insurance premium [without employer subsidy], a semester of public college, and the operation of a vehicle."

"To assign an annual cost of college to a family whose tuition payments will be concentrated in a few years, the COTI uses the federal National Center for Education Statistics estimate for half of one year's tuition, fees, room, and board at a four-year public institution. Two children pursuing four-year degrees would require a combined sixteen semesters of college, so a household preparing for those costs would need to save roughly one semester's worth of cost per year before the children reached college-going age."

"In 1985, the COTI stood at 30 [weeks] — the median male worker needed thirty weeks of income to afford a house, a car, health care, and education. By 2018, the COTI had increased to 53 [weeks] — a full-time job was insufficient to afford these items, let alone the others that a family needs. A generation ago, the worker could be confident in his ability to provide his family not only with the basics of food, clothing, and shelter, but also with the middle- class essentials of a house, a car, health care, and education. Now he cannot."

There is definitely something to his argument. In the past in a majority of families, one person could work and provide for a family. At present in a majority I think both parents must work to be able to cover necessities in New Zealand. Many more hours work just to "live".

<comment><USER10> This has been happening since women went to work after WWII. When you double the size of the workforce and keep the population the same, you will have a productivity boom at first, but then eventually things will come back into equilibrium and the cost of labour is half (since the availability of workers is double) of what it used to be. Looking at history in the macro this is exactly what happened: economic boom in 50's, followed by gradual decrease in labour wages starting from the 70's until today.

I'm not disparaging women working, I'm just saying wage stagnation is an unforeseen side effect. If 1 of every working couple decided to stop working, our economy would crash, but wage rates would increase dramatically.

<comment><USER11> I feel it's slightly more complex than that.

With a new significant portion of the workforce able to work, you enable on one side, new economic needs (more transports, more kindergartens, etc) and on the other side you enable more production of goods which in theory should improve the material conditions of a society. Basically a society should be more efficient if it stops excluding half its available workforce.

But a the same time, housewives where not passive actors in the economy, they did had an economic impact (raising children, etc), just that this economic impact was not measured previously. However it was probably not equivalent to a paid job in term of economical impact, and for obvious emancipation reasons, it's definitely not a state to return to.

<comment><USER10> I can't disagree with anything you said. But I think it goes without saying that any bit of economics can't really be fully encapsulated in a couple paragraphs. We're painting with broad strokes and of course there are more variables at play.

</comment></comment></comment></comment></comment><comment><USER12> He talks a lot about cars costing more (and being better). But he neglects that cars (and houses) are financed.

Financing a car decades ago was expensive. You are now paying the same monthly price for a better and more expensive car. Fewer of your dollars go to the bank for financing, because interest rates are so low, and more dollars go to the car maker.

The same goes for a lot of people looking at housing sticker prices, and not the actual cost people are paying for houses. When you look at how cheap financing is today, a lot of the inflation of these goods declines, or evaporates entirely.

<comment><USER13> True. But some of us are worried about what will happen if the rates increase. Also, any kind of liquidity problem seems more grave if your debt, which cost you the same despite 5x lower rates, is 5x more.

</comment></comment><comment><USER14> > 10/ When we say "inflation-adjusted wages look good," we are actually saying > "if you could take your wage back to 1970 and spend it, you'd be better off > than you were at the time with a 1970 wage." I mean, maybe that's > interesting. But it doesn't describe lived experience.

Isn't more like saying, you can buy more units of 2020 "consumer goods" with a 2020 wage than you could buy 1970 consumer goods with a 1970 wage? His point is just the definition of inflation: $1,000 in nominal dollars more valuable in 1970 than in 2020.

<comment><USER15> The important part is the segmentation of inflation between the whole economy (consumer goods, industry, and also the basics) and the price of just the basics: housing, health care, transportation, education. If those basics were the basket of goods used to define inflation, then the numbers would be very different.

$1000 in 1985 dollars buys $2300 worth of consumer goods in 2020. But you'd need $3,110 2020 dollars to buy the basics you could get for $1000 in 1985.

<comment> crooked-v Or, in other words, inflation indexes are an average, and like all averages, it's a bad idea to blindly trust it, because sub-groups of the overall data may show much different results.

<comment><USER16> The problem is not averaging. The problem is these inflation measures specifically exclude major expenses.

</comment></comment></comment></comment><comment><USER17> Cherry picking by looking at males only, which somehow didn't make it into the title here in what I'm sure was an innocent oversight. It's also flat out lying by saying "earn same" \- the tweet only claims earning enough to pay for typical household expenses - the typical household buys a lot more things than they did in 1985.

Title is heavily misleading and inaccurate and should be changed.

See [https://twitter.com/Noahpinion/status/1230547825122889728](https://twitter.com/Noahpinion/status/1230547825122889728) for some other comments on the thread

<comment><USER18> In many ways, the advent of dual-income households has made everyone poorer

[https://www.vox.com/policy-and- politics/2019/1/23/18183091/t...](https://www.vox.com/policy-and- politics/2019/1/23/18183091/two-income-trap-elizabeth-warren-book)

<comment><USER17> Note that Warren isn't claiming that everyone is poorer, rather specifically middle-class households that chose to buy expensive housing to get into better school districts. Her argument can be read as saying that housing/education inflation is higher for those families specifically (and therefore lower for everyone else - if it's higher than average for some it must be lower for others, that's the nature of averages).

Also this is unrelated to my point, which is that OP has a misleading and borderline false title.

</comment></comment></comment><comment><USER19> I don't understand the point about the cars and inflation, don't your inflation measures use a basket of goods and services that get updated looking at current market shares? That's how it works in the UK.

Source: [https://www.ons.gov.uk/economy/inflationandpriceindices/meth...](https://www.ons.gov.uk/economy/inflationandpriceindices/methodologies/consumerpricesindicestechnicalmanual2019) (search vehicle)

<comment><USER20> The problem is that the basket of goods is not representative of a real family's actual expenditures.

The basket of goods may include the price of gasoline, but does not include the cost of car insurance, car tabs, toll roads, or a parking space.

The basket of goods may include the cost of an X-Ray, which doubled in 20 years, but does not the cost of buying a health insurance plan (Which quintupled in 20 years).

In this way, the basket of goods is an accurate, but completely misleading metric for inflation.

I don't care how much an X-ray costs, I care how much health insurance costs. I don't care how much buying a new car costs, I care about the _total_ cost of ownership of a car. I don't care about how much a 3-bedroom house in the Mid- west costs, I care about how much I pay my landlord for a tiny apartment in a coastal economic center. I don't care about how much the tuition-only part of my degree costs, I care about the _total_ cost of going to college, which includes unresellable textbooks, mandatory housing, mandatory meal plans, and student fees that fund a new stadium. I don't care about how much an analog land-line phone costs (About 29 bucks, lasts you for life), because everyone I interact with expects me to have a $300 cellphone that breaks every 4 years.

But if you only look at a basket of goods which is based on the cost of an X-ray, a bottle of aspirin, a monthly payment on a new car, rent for a house on the outskirts of JoblessTown, Nowhere, the cost of a single credit-hour of college, and the ammortized cost of an analog telephone, you get a _fantastic_ metric.

<comment><USER19> > The basket of goods may include the price of gasoline, but does not include > the cost of car insurance

Seems like CPI in the US does include motor vehicle insurance though.

> but does not the cost of buying a health insurance

It does according to the business insider article.

Seems to include wireless telephone services and telephone hardware so I'd be surprised if that doesn't cover a mobile.

Where are you using for your list of the basket of goods?

[https://www.businessinsider.com/breakdown-of-consumer- price-...](https://www.businessinsider.com/breakdown-of-consumer-price-index- basket-2014-1?r=US&IR=T)

<comment><USER21> There's many things CPI doesn't factor. For example house prices:

[https://www.thebalance.com/consumer-price-index-cpi-index- de...](https://www.thebalance.com/consumer-price-index-cpi-index-definition- and-calculation-3305735)

"Note that the CPI does not include sales price of homes. Instead, it calculates the monthly equivalent of owning a home, which it derives from rents. That's misleading. Rental prices are likely to drop when there is a high vacancy rate. It occurs when interest rates are low and housing prices are rising. People are more likely to buy houses when the market is improving. Conversely, home prices fall when interest rates rise. As the housing market deteriorates, people move into apartments. That makes rents increase."

Anyhow, the point is that CPI is largely cherry picked data, and the way it factors things can be misleading. I wouldn't be surprised that it doesn't accurately measure people being priced out certain assets entirely.

</comment></comment></comment></comment><comment><USER22> This twitter thread is complete garbage. The headline statistic is cherry picked to include the categories that have outpaced inflation the most. They also double count health insurance, which for most full time employees is a benefit they receive on top of their salary.

Contrary to what rose twitter tells you, real individual compensation has increased over the past few decades, not decreased (albeit perhaps not by as much as it should have, and a lot of the increase has been diverted to surging healthcare costs).

</comment><comment><USER23> Thank you globalization! Ross Perot was right. The Dems and Repubs both took Corp money and left the workers behind. Cesar Chavez knee this too. No one listened. And now we wonder how it happened.

It's no wonder. The pols, the Koches and many other industrialists sold us all out.

On the other hand we can afford heaps of cheap junk that doesn't last longer than it takes to ship it over cargo ship.

<comment><USER24> > The Dems and Repubs both took Corp money and left the workers behind

I get that the statistics show billionaires owning the majority of the wealth while the common-person in America makes $30k/yr but... there are plenty of Americans doing a-ok too. Who is really to blame?

Take a trip down to South Florida. You'll see a lot of Bentley, Rolls-Royce, Lamborghini, Ferrari. Lots of high fashion and packed restaurants. Workers are getting left behind, sure. But some workers are making it too.

Especially those on HackerNews in IT who are fiscally savvy, packing away six- figure salaries responsibly.

<comment><USER25> How many homeless people are you stepping over to see those Ferraris?

<comment><USER26> Outside of California, rich people keep their homeless swept out of sight, for the most part.

<comment><USER25> I see them plenty in Boston.

</comment></comment></comment></comment></comment><comment><USER27> I am not an expert on American car market by any stretch, but I was interested to dig more into the claim about car prices of a certain. So I thought I will ignore that specific car brand (grand caravan) and see what data comes up in cars.com.

After few searches - to me it seems like SUVs have over taken as a preferred choice and minivans have simply lost appeal. On cars.com for 90001 postcode there are close to 20,000 options for SUVs compared to only about 700 for minivan. And there are lot of SUVs available for less than 15K, where as the grand caravan is from 20K onwards.

Essentially, I suspect market is working well in keeping cost of the cars actually getting sold low and minivans are expensive as choices are limited.

Macro economics is hard. Author will get lot of different perception if they compared long distance phone calls in 1980s compared to today for example.

</comment><comment><USER28> > But, if you're a family that needs to buy a minivan, while it's nice that > the 2018 Grand Caravan ($26,300 in 2018) has many features the 1996 Grand > Caravan ($17,900 in 1996) did not, you still face the problem that you need > an extra $8,500 to buy one.

> A key assumption of our inflation-adjusted analyses is that old products are > still available. Don't like / can't afford the $26K 2018 Grand Caravan, go > buy the $18K 1996 one instead. Except you can't.

But you can.

Tons of used cars available within 50 miles of SF for under $15k ([https://www.cars.com/for- sale/searchresults.action/?prMx=150...](https://www.cars.com/for- sale/searchresults.action/?prMx=15000&rd=50&searchSource=QUICK_FORM&stkTypId=28881&zc=94110)) including a 2018 Dodge Caravan for $13,999.

There are certainly good points in the thread, but this isn't one of them.

<comment><USER29> Right but there were tons of used cars in 1996 too that were available at a similar discount. The tweets are incomplete in that they fail to fully explain how CPI adjusts internally for quality improvement, but if we buy that (I think it's reasonable) then cars, new and used, would be relatively more expensive today than in 1996

<comment><USER28> But a used 2018 minivan is a lot better than a new 1996 minivan and costs less even without adjusting for inflation. So, I can get a better car for less money today than I could in 1996.

I think the issue might be status. Driving a brand new minivan in 1996 might have felt like you were getting ahead in life. Driving a used minivan today might feel like you're falling behind just because other newer and more expensive cars carry much more status.

<comment><USER30> Absolutely -- in fact, I think including cars in this discussion is a massive red herring because car reliability and choice have improved so much. Yes, the Caravan may be more expensive, but for sure there are much cheaper and more reliable non-Caravan options out there.

<comment><USER31> | car reliability and choice have improved so much

Citation needed. I've worked on my cars a lot and this is not borne out by my experience.

Edit: I feel we can leave EVs out of this discussion until they're in at least 50% of households' driveways.

<comment><USER30> Fair to leave EVs out.

I probably wasn't specific enough, either. When I was a kid in the early 90s, a car making it to 100k was still considered a (possibly then outdated) achievement, whereas in the last 15 years, a car making it gracefully to 100k miles is simply expected.

\- It's possible that I'm old enough such that this point no longer seems novel.

\- I'll also concede that despite this, there are plenty of cars which aren't reliable which people buy. If I'd clarified better, I might have said that even if there are plenty of unreliable cars these days, consumers have a large pool of reliable cars to choose from.

Cost, I hope is more self-evident. Consumers today have a absolutely amazing choice of quality, reliable cars (Fiesta, Fit, Versa, Yaris, Rio, Accent, etc) in the range of $15k.

\- A fair counterpoint would be that the median price of cars is actually quite high: ~$30k.

\- Like before, I should have been more specific said that consumers have really great low-cost options, rather than that "cars are [broadly] cheap these days.

<comment><USER31> Yeah, there are definitely more entry level models now, but I feel like that hasn't really brought prices down that much taking inflation into account.

Another issue not mentioned is that new cars have grown in complexity (electronics) immensely and have therefore become less easy for one to repair and less reliable at the same time.

Anecdotally, a friend of mine had an early '10s Fiesta that was a total lemon (transmission issues were widespread with these).

</comment></comment></comment></comment></comment></comment></comment><comment><USER32> I wonder how much that 1985 worker paid for smart phones, cable or streaming tv, and modern entertainment.

I think today's standard of living is simply higher. You could live on 1985 wages, but your family wouldn't be happy.

<comment><USER33> But that's the problem, we have more stuff but lower quality of life. And even if you sacrifice the stuff you can't live on 1985 wages.

I'd gladly sacrifice a smart phone and streaming TV to live in a large house with 3 kids on a single working class income like my father did, but the $200 phone and and $10 netflix wouldn't even cover a weeks rent.

<comment><USER32> Hey, it can be done. I'm living in a fairly big house now, with 3 kids and a stay-at-home wife.

I live in the central US, and work remote. (The company pays fair wages for the northeast, which translates well to my locale.)

I know not everybody can be so lucky, but I wanted to mention it can still be done.

</comment></comment></comment><comment><USER3> I used to say something to this effect about homelessness. That part of why we have a housing shortage and other countries do not is because we have made certain types of housing illegal and thus made the "bottom end" housing too expensive for some.

Things like shanty towns etc.

Now, I'm not advocating for a society that houses people in shanty towns as an end goal. But I am advocating that shantytown might be an upgrade for some and we need to help people upgrade.

<comment><USER34> Large portions of the US populations arguably already live in shantytowns; run down inner cities inhabited by great migration blacks, sprawling exurbs in the south and south west inhabited by recent hispanic immigrants, many illegal, and trailer parks in the rust belt where white factory workers layed off by globalization are dying from opioids.

Its only in a few well insulated big cities that the true effects of globalization are kept far enough away to not be immediately obvious.

<comment><USER3> I agree that many live in sub-average and sub-human living standards.

What I'm trying to point out is that some home might be an upgrade from _no home_

</comment></comment></comment><comment><USER35> Well done:

[https://twitter.com/oren_cass/status/1230505794686373888](https://twitter.com/oren_cass/status/1230505794686373888)

The guy identified the 4 big government backed monopolies, all with government backed debt, which all now eat a majority of income.

We've known since 1776 that the way prices come down is competition. You should know that it's illegal to open a hospital or college without government permission. It's illegal to build a building. It's so bad that in order to open a hospital in most states, any nearby hospital can protest you license application merely for being close to another hospital. Who in their right mind would give an 18 year old $100k for college? Nobody. That's why the government backs it and you can't default on it. Who backs your mortgage? The government. It goes on and on and on.

There is no mystery here AT ALL if you studied economics. The answer is very simple, allow competition.

Now to lay back and drown in the downvotes :-)

<comment><USER36> I don't see why you should get downvotes. You should get schooled instead.

For starters, you don't mean 1776. You mean one of the years from 1787-1789 when the Constitution was written and first used to instantiate our Federal Government. You certainly don't mean 1776 because the attempt to create the government in that year, the Articles of Confederation, was not at all the current government, and it barely lasted a decade, depending on how one measures it.

Opening a hospital, or any kind of medical practice, is generally regulated. In particular, regulation is done by a dedicated guild of medical professionals. Similar regulation covers legal advice, with bar associations qualifying legal advisors. In both cases, there is a monopoly on service providers. Two observations are important here. First, despite the monopoly, alternative service providers exist in the marketplace; quacks, fly-by-night veterinarians, alternative medicines, homebrew pharmacology, WebMD, etc.; or for law, anything from a smart friend to r/legaladvice. Second, only one of these practices seems to have had a cost disease. Perhaps the cost disease is due to something else! In particular, perhaps it is due to the 1973 HMO Act. You are right to be irritated at the government, but wrong to focus your ire entirely there. HMOs are to blame, too; in fact, they are mostly to blame.

Exercise for you: Rerun the previous paragraph's logic with mail and USPS, and double-check that it still holds.

I don't know where you live, but around where I live, it's legal to build a building, but not inside city limits or on protected wetlands. If you have title to the dirt below, then you can build things above. You might want to consult with local authorities depending on exactly what you're building, but you can generally build it. (Go ahead, I _dare_ you to rattle off all the things that can't be built.)

Just like how banks can and do compete with Freddie and Fannie for securing loans to homeowners, there are plenty of private sources for student loans. Perhaps it is predatory cruel for the government to issue student loans; perhaps student loans are predatory and cruel in general, like payday loans or title loans, in which case we should outlaw them entirely.

It sounds like you might have studied economics. In that case, surely you don't believe in the Efficient Market Hypothesis? Markets are clearly inefficient and there's good theoretical reasons to believe that it takes exponential time for an honestly-run market to find even one Nash equilibrium.

Finally, who cares about economics? You ought to study _history_. In particular, remember Enron? [0] This is the sort of thing that makes your position look like that of a stupid libertarian standing in the water with his waders and wondering why there's no fish in the river for him.

[0] [https://en.wikipedia.org/wiki/California_electricity_crisis](https://en.wikipedia.org/wiki/California_electricity_crisis)

<comment><USER35> The wealth of nations was published in 1776. Maybe I'm not the one that needs to study history.

<comment><USER36> Ah, you're one of _those_ fools. When you're finished with history, try complexity theory [0].

[0] [https://arxiv.org/abs/1002.2284](https://arxiv.org/abs/1002.2284)

</comment></comment></comment></comment><comment><USER37> The original article (posted below) hits the nail on the head: regardless of 'inflation' or 'quality increases', a single breadwinner (assumed male in this case) can't support basic parts of the 'American Dream'.

They could in 1985, with some money to spare.

That's a HUGE difference in social structure and the 'feeling' of society.

A part of the socialist mindset is the idea that people in fact _should_ be able to live in an economic system and afford the things that everyone wants. Socialism doesn't deliver that exactly (see Spain, Greece, France, etc.) without huge amounts of natural resources, but it's similarly clear capitalism has driven out most people's abilities to do that too in the past 30 years.

Thus the impasse (political and economic) the US finds itself in right now.

</comment><comment><USER38> OK...that's one side of the story. But is cost of living really being compared fairly? One $200 smart phone now does the job that in 1985 required a clock radio, a walkman, a CD player, a word processor, a printer, a fax machine, a telephone, a calculator, an address book and a voice recorder. How does this account for the multiplicative effect of technology on purchasing power?

<comment><USER39> And most people didn't have a word processor, a CD player, a printer, a fax machine, or a voice recorder. Which--and this might be shocking!-- _was by and large fine_ , as life had not been adapted to their presence.

"But society has stuck you with all this extra shit!" is not a good, moral, or _acceptable_ response to "I am less able to pay my bills."

<comment><USER40> A large reason why wages have essentially "stagnated" is because the workforce has doubled with the advent of women entering the workforce. Laws of Supply and Demand say that wages should go down...it is to be expected. This is why for many a two income household is now necessary for a family these days.

<comment> dane-pgp Unfortunately it's more complicated than that:

[https://ourworldindata.org/uploads/2017/08/Labor-Force- Parti...](https://ourworldindata.org/uploads/2017/08/Labor-Force- Participation-of-women-in-the-US-1955-2005.png)

While the employment rate for "Married women, spouse present" doubled from 1955 to 1990 (which may be what you're referring to), the rate for "All women" between 1985 and 2005 went from 55% to 60% (and falling).

<comment><USER40> Yes I was referring to that statistic; but I think it it more representative of the cause of wage stagnation. We had a flood of people come into the workforce in a few decades that were not there previously. Although the statistic that you provided is interesting...I think maybe we should not be looking at ALL women? I say this because many women may be in school still or retired and don't want/need to work.

</comment></comment></comment></comment></comment><comment><USER41> I hate the current method used to calculate the CPI.

I am boring I prefer to use oz of gold. Yes, gold is very volatile but the US dollar is very volatile.

Gold 1985 USD 327 per oz, therefore, the car is $17,900/ 327 = 54.74 AU oz

Gold 2018 = $1320 per oz

Car $26,300 , therefore, car = $26,900/1320 = AU 20.37 oz

The car is dropped by 2/3 in terms of gold.

<comment><USER42> That's neat but people don't get paid dollars, not gold.

</comment></comment><comment><USER43> > 5/ Fair enough. But, if you're a family that needs to buy a minivan, while > it's nice that the 2018 Grand Caravan ($26,300 in 2018) has many features > the 1996 Grand Caravan ($17,900 in 1996) did not, you still face the problem > that you need an extra $8,500 to buy one.

$17,900.00 in 1996 is $28,647.64 in 2018. Doesn't take a genius to double- check this work. It's factually untrue that the Grand Caravan went up in price when adjusted for inflation. The rest would take a while to verify (graphs have no source citations).

<comment><USER44> >It's factually untrue that the Grand Caravan went up in price when adjusted for inflation.

He explicitly says that right before? "4/ For example, our inflation-adjusted data say car prices have not increased since the mid-1990s."

I believe his argument is more around how we're calculating inflation, i.e. that prices have actually gone up more than economists claim through inflation. Looking at inflation adjusted numbers in the fifth thread would lead to circular reasoning and is besides his point. That said I am not great at dissecting these kinds of twitter threads and may be misinterpreting too; I agree that the way he is arguing it is confusing.

<comment><USER43> Inflation is calculated via the Current Consumer Price collected by the Bureau of Labor Statistics. if he has a problem with the methodology they use, he should talk about that, but as far as (4) is concerned:

> 4/ For example, our inflation-adjusted data say car prices have not > increased since the mid-1990s. Obviously, that's not remotely true. What > economists are saying is that cars have gotten better so the higher sticker > price doesn't reflect inflation, it reflects higher quality.

Wait, what's not remotely true? That inflation also affects car prices? Is he being serious here? At the very least, can we agree that prices are _comparable_?

<comment><USER45> Actually it's the BLS that says inflation has not affected car prices. And, yes, he is questioning their methodology.

<comment><USER46> Well, it's interesting.

If you wanted to buy a BMW with 250hp in 1996 that would run 0-60 in about 5.5s and seat four adults, you were going to be buying an M3 for about $40,000.

If you want to do the same thing in 2020, you're going to buy a 330i for almost the exact same money only with a bunch more safety tech, 50% better fuel economy, more luggage space, more passenger space ...

</comment></comment></comment></comment></comment><comment><USER47> I would like to see the impact of the dollar in terms of the environment in 2020 vs 1985. I hope that the impact of my dollar is less, and I bet most people today are willing to pay more for a smaller environmental impact.

</comment><comment><USER48> I think if there were less people there would be more resources to go around.

<comment><USER49> Resource creation requires work, and technology increases the rate that resources can be created. More people means more available work and better technology. We aren't at the point where less people means more resources.

<comment><USER48> I don't really believe that; it's also weird how many people argue in favor of a larger population. And anyhow the resources I want most are space, peace, and silence - all of which increase with a smaller population.

<comment><USER50> "I don't really believe that" is a pretty weak response to a post that had at least some logical argument in it.

> the resources I want most are space, peace, and silence - all of which > increase with a smaller population.

Sure, it was great when you could just find a place you like, break out your axe, build yourself a cabin, and just live there. You still needed an axe, though. Even if you were a blacksmith, the iron came from someone else - several someone elses, in fact.

But that's not enough these days. Now you want a solar-powered cabin. Producing those solar panels takes people. And you want to not die in your cabin unnecessarily, so on occasion you need people like a good cardiologist.

Many of us want space, peace, and silence. We just don't want to live in the kind of world where we could get it, because we _also_ want chunks of modern civilization available on demand.

<comment><USER48> a cardiologist brings little resource to my life if i can't bring him in on a 100 mile horse drawn carriage ride to my estate before dawn to treat me before i get ready to teleport to my underground laboratory in new michigan for work in the morning.

</comment></comment></comment></comment></comment><comment><USER51> The title isn't supported by the underlying data. The key chart in the Tweet thread is this: [https://twitter.com/oren_cass/status/1230505794686373888/pho...](https://twitter.com/oren_cass/status/1230505794686373888/photo/1)

This looks at "major household expenditures" versus "median male income." Right off the bat, that should be a red flag--why are we looking at just male income? The percentage of women working since 1985 has only increased a little bit. But women's wages have gone up 50% adjusted for inflation.

Of course, when women have been bringing more money into the family, people will spend more. For example, the chart shows expenditure on housing increasing. But the average American house today has twice as much square footage per person than in 1985: [https://azgolfhomes.com/wp- content/uploads/2016/07/American-...](https://azgolfhomes.com/wp- content/uploads/2016/07/American-Enterprise-Institute-Housing-Data.jpg). Expenditures on housing are increasing--but the number of vehicles per household has also gone up since 1985. The cost of college has gone up, but the percentage of people attending college has also doubled in that time frame. Colleges, moreover, are far more luxurious than in 1985. (The community college where my mother in law works now has far nicer facilities than Georgia Tech did when I attended just 15 years ago.) College itself has become something of a luxury consumption good--with large numbers of young people attending, drinking and having fun for four years, but getting degrees of questionable utility.

There are a lot of sound bites (and Twitter-level analysis) on this subject, but it's actually extremely hard to figure out how to precisely measure changes in standard of living over time. For example, even just looking at the "median" is misleading. In 1990, when I came to America, the percentage of foreign-born people was 7%. Today it's double that. Even in an economy that provides tremendous upwards mobility for immigrants, doubling the share of the immigrant population is going to make the median income seem lower. The median household is also much smaller than in 1985, and less likely to be comprised of married couples. Since 1985, the percentage of people 18-34 living with a spouse has decreased by 2/3\. (That observation is particularly significant because the percentage of women participating in the workforce hasn't changed significantly since then.)

Accounting for these differences is important. When people think of the "median" they think they're comparing like with like. "Two-income middle class American-born family with two kids in 1985 versus 2015." They don't think you're comparing a married young couple from 1985, where both spouses work and share household expenses, to unmarried individuals maintaining two separate households in 2015. But unless you account for changing demographics, that's exactly what you're doing.

<comment><USER52> > "But the average American house today has twice as much square footage per > person than in 1985... Expenditures on housing are increasing--but the > number of vehicles per household has also gone up since 1985. The cost of > college has gone up, but the percentage of people attending college has also > doubled in that time frame. Colleges, moreover, are far more luxurious than > in 1985."

> "...it's actually extremely hard to figure out how to precisely measure > changes in standard of living over time."

indeed, those kinds of increases are of "questionable utility", and thus not relevant to the standard of living discussion.

rather than the fed's definition of inflation, it's important to look at the basket of essential goods (and more house and more cars ain't it) when we consider the economic tide for the majority of americans.

<comment><USER51> It's highly relevant to the author's specific methodology. The author is _not_ "look[ing] at the basket of essential goods" and comparing their cost over time. He's comparing household expenses to a single man's earnings over time. That overlooks that, as women's earning power increases, couples might choose to spend that money on more housing, more cars, etc.

I grew up in an 1,100 square foot house with 1 car. My mom was a stay-at-home wife and my family could afford to live on just my dad's income. My wife and I, by contrast, earn about the same amount. But we can't afford to live on just my income. We have chosen to spend my wife's income to increase our standard of living. So we have a 3,000 square foot house and 3 cars. Under the author's methodology, my earning power has gone backward compared to my dad. But his analysis completely misinterprets the situation.

<comment><USER52> i'll just point to the last paragraph of the introductory section of the author's (oren cass's) companion article[0]:

> "In 1985, the COTI stood at 30—the median male worker needed thirty weeks of > income to afford a house, a car, health care, and education. By 2018, the > COTI had increased to 53—a full-time job was insufficient to afford these > items, let alone the others that a family needs. A generation ago, the > worker could be confident in his ability to provide his family not only with > the basics of food, clothing, and shelter, but also with the middle-class > essentials of a house, a car, health care, and education. Now he cannot. > Public programs may provide those things for him, a second earner may work > as well, or his family may do without, while his television may be larger > than ever. The implications of each are surely worth pondering. But the fact > that he can no longer provide middle-class security to a family is an > unavoidable economic reality of the modern era."

what i called "basket of essential goods" is his COTI (cost of thriving index). more housing and more cars are exactly beside the point. he's making an argument about what it takes to be secure and solidly middle class in the US, not about having more stuff, which is beyond the "thriving point".

and he also encompasses your point that the average american (male) can no longer reach that "thriving point", because the average american (male) would need more than a year's wages in a year. but he's not actually talking about you, an upper- (or possibly upper-middle-) income earner, but rather the solidly middle class american (male).

[0] [https://americanaffairsjournal.org/2020/02/the-cost-of- thriv...](https://americanaffairsjournal.org/2020/02/the-cost-of-thriving/)

<comment><USER51> The author isn't using a basket of goods approach because he's not even attempting to keep the basket the same. The author isn't looking at what it costs to "provide middle class security" he is looking at what people actually spend.

</comment></comment></comment></comment></comment><comment><USER18> That's great, welcome to 1980 healthcare efficacy and college built to train for 1980 careers. Enjoy!

</comment><comment><USER53> > In 1985, the typical male worker could cover a family of four's major > expenditures (housing, health care, transportation, education) on 30 weeks > of salary. By 2018 it took 53 weeks.

The author has clearly never heard of Baumol's cost disease. The primary reason that households now expend more on housing, healthcare and education is because they expend a significantly smaller fraction of their income on food, electronics, entertainment, energy, clothes, appliances, telephone service, automobiles, and furniture. All of which have seen strong deflationary pressures.

Households ultimately need to expend their wages on some category. As the cost of certain goods fall relative to incomes, most consumers will allocate more of their expenditures on the goods that fell at slower rates. For example the average Nigerian or Indian spends a much lower percent of their wages on education or healthcare viz-a-viz the average Swiss or Singaporean. Only a fool would conclude that Switzerland's wealth has made it "fall backwards" relative to Nigeria. Instead the explanation is much simpler: the Swiss can feed and cloth themselves using a small fraction of their income. That leaves more left over to spend on comparative luxuries like better medical care and longer educations.

This dovetails into the second fundamental flaw with the author's analysis. He's simply comparing the total expenditures on housing/healthcare/education/transport between 2020 and 1985. That's making the implicit assumption that people in 1985 were consuming the same basket of these goods as people in 2020. He explicitly eschews measures of inflation, because inflation reveals the fact that the items themselves have not seen price increase. Expenditures rose because households are using their higher incomes (including more two income families) to buy _more_ of these goods with more premium qualities.

For example one major reason housing expenditures have gone up is because the average home is 50% larger than it was in 1985[0]. Another reason is because of major quality improvements like central AC, attached garages, higher ceilings, better fire safety, higher capacity electrical circuits, and swimming pools. Adjusted for CPI, the median cost per square foot for housing only rose by 5% between 1990 and 2010[1] (which doesn't even adjust for significantly lower mortgage rates).

Similarly expenditures on transportation has gone up because compared to 1985, Americans travel 25% more miles per capita, and have 20% more vehicles per capita[2]. Automobile fatality rates were nearly 200% higher in 1985[3]. And I don't think I even need to tell you how much more reliable and comfortable cars are today than in the 1980s.

Healthcare and education probably have shown more true cost disease. However without a doubt Americans have also seen significant increases in their consumption levels. College enrollment rates have increased by more than 100% since 1985. Healthcare consumption has soared over the same period, not least because the country is significantly older and more obese, both of which require many more medical interventions. Compared to 1985, 100% higher proportion of the population works in the healthcare sector.

All of which goes to show that the author is plain wrong about his conclusions. The trends he shows are easily explainable by the fact that real household incomes have grown significantly since 1985 (not least because many women entered the full-time workforce). It now takes a significantly smaller percent of household incomes to satisfy basic needs with regards to food, apparel, utilities, appliances and furniture. So people have much more money left over to spend on comparative luxuries like bigger homes, safer and more reliable cars for both adults in the household, more medical treatment with advanced techniques, more home healthcare, and longer post-secondary educations. That's not a story of American households struggling, that's a story of the incredible consumer growth.

[0] [https://www.propertyshark.com/Real-Estate- Reports/2016/09/08...](https://www.propertyshark.com/Real-Estate- Reports/2016/09/08/the-growth-of-urban-american-homes-in-the-last-100-years/) [1] [https://www.census.gov/const/C25Ann/soldmedavgppsf.pdf](https://www.census.gov/const/C25Ann/soldmedavgppsf.pdf) [2] [https://www.ssti.us/2014/02/vmt-drops-ninth-year-dots- taking...](https://www.ssti.us/2014/02/vmt-drops-ninth-year-dots-taking- notice/) [3] [https://en.wikipedia.org/wiki/Motor_vehicle_fatality_rate_in...](https://en.wikipedia.org/wiki/Motor_vehicle_fatality_rate_in_U.S._by_year) [4] [https://www.statista.com/statistics/183995/us-college- enroll...](https://www.statista.com/statistics/183995/us-college-enrollment- and-projections-in-public-and-private-institutions/) [5] [https://randomcriticalanalysis.com/why-conventional- wisdom-o...](https://randomcriticalanalysis.com/why-conventional-wisdom-on- health-care-is-wrong-a-primer/)

<comment><USER54> I can get behind your theory. But I don't know how well it holds for housing, because of the technique described in the longer article posted in another thread. [0] Specifically, housing is 40% fair market rent on a three-bedroom apartment. So while it's certainly possible that the things you talk about housing are true for apartments, it's a different argument to make. Certainly at least some of the things you discuss are applicable, like central AC. Some others, like size, are probably less applicable.

> Adjusted for CPI, the median cost per square foot for housing only rose by > 5% between 1990 and 2010

Minor nit, but it seems like poor form to take someone who's arguing against CPI, and then to use CPI-adjusted numbers in a counter-argument.

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

<comment><USER53> > Minor nit, but it seems like poor form to take someone who's arguing against > CPI, and then to use CPI-adjusted numbers in a counter-argument.

That's fair enough. But let's use the author's preferred denomination of nominal median household income. From 1985 to 2018 this number rose 21% faster than CPI.[1] Given this it means the median cost per square foot _fell_ by 15% over the period.

> Specifically, housing is 40% fair market rent on a three-bedroom apartment.

Thanks for linking that. That article found a 172% increase in nominal terms for its "typical example" of a 3 bedroom apartment in Raleigh, NC.

In nominal terms, median real household incomes at a national level rose by 196%[1]. Data for Raleigh specifically doesn't go back to 1985. But since 2006, Raleigh incomes have risen 0.5% faster than the national average.[2] Therefore using the author's preferred metric rental housing has actually become 8-19% _more_ affordable.

Finally focusing on rent ignores the fact that 65% of American households are owner-occupied. Over the same period the cost of rent has risen substantially faster than the cost of ownership, not least because mortgage rates fell 12.5% to 4.5%[3]. If you take a weighted average of renters and owners, you'll find housing costs grew at substantially slower rates than simply picking a single metro's rental costs over time.

[1] [https://fred.stlouisfed.org/series/MEHOINUSA672N](https://fred.stlouisfed.org/series/MEHOINUSA672N) [2] [https://www.deptofnumbers.com/income/north- carolina/raleigh/](https://www.deptofnumbers.com/income/north- carolina/raleigh/) [3] [https://www.valuepenguin.com/mortgages/historical- mortgage-r...](https://www.valuepenguin.com/mortgages/historical-mortgage- rates)

</comment></comment></comment><comment><USER55> Talk about burying the lede. TLDR, the amount of time you have to work in order to buy some things, such as a car or some kinds of medical care, is greater now.

In 1985, if you crashed your minivan going 50 mph, you were probably dead. You probably also killed whoever you hit.

Yesterday, I was witness to an accident where a car going 50 mph t-boned a car and went through a fence. Both drivers were walking around and exchanging information after a few minutes.

Some things have gone the opposite way. A basic computer was quite expensive in 1985 and took quite some time of diligent saving to afford if at all possible. Today, you can get a basic mediocre laptop for less than a weeks wages for low income earners.

Yes, cars are just absolutely more expensive today, as is medical care. That's not some great economics argument, it's just how technology works.

<comment><USER56> _A basic computer was quite expensive in 1985 and took quite some time of diligent saving to afford if at all possible._

A C64 was $149 in 1985.

<comment><USER46> >A C64 was $149 in 1985

And a 13" color monitor was $200, and the 1541 floppy disk drive was another $160.

Even if you just bought the Commodore cassette deck and connected the computer up to your existing television, you were looking at $200 for a usable configuration.

Walmart will sell you a Lenovo Ideapad 130s (laptop with a 14" LCD, dual-core Celeron, 4GB RAM and 64GB solid-state storage) for $189.

<comment><USER56> _Even if you just bought the Commodore cassette deck and connected the computer up to your existing television, you were looking at $200 for a usable configuration._

Yes, that would be a _basic_ configuration. Disk drives and color monitors are luxuries if we're talking about the lowest of low end here. In fact, the C64 is a bad example because it was not the cheapest system available, and many other low-end systems allowed you to use the standard cassette deck you already had as storage.

The point is: Yes, you're right, a basic computer is _cheaper_ today, but the price is roughly comparable and not anywhere near the realm of "unattainable except through years of saving up".

</comment></comment></comment></comment><comment><USER57> How much of this is due to the growth in labor force in general and the prevalence of dual income families. See: [https://www.dol.gov/agencies/wb/data/facts-over- time/women-i...](https://www.dol.gov/agencies/wb/data/facts-over-time/women- in-the-labor-force#civilian-labor-force-by-sex).

If you go further back (50s - 60s), it was very common for a household to survive on a single income. Even 30-40 years ago when I grew up, our family of 6 lived off a single income from a non-college graduate.

That's very hard to do now, except for certain fields like tech.

<comment><USER58> That's pretty much the exact premise of the OP. Specifically, the growth in labor force/prevalence of dual income families was driven by the increase in costs, not the other way around.</comment></comment>


Simulating Crap Networks on a Raspberry Pi (2018) - <AUTHOR> https://planb.nicecupoftea.org/2018/09/22/simulating-crap-networks-on-a-raspberry-pi/ <comment><USER2> At Maker Faire Tokyo this year there was a booth handing out PCBs for their side project: an interactive packet delay and packet loss simulator. Underneath it uses tc commands, but they used rotary encoders and a little LCD screen to make it super easy to use.

I took a PCB, bought the other parts, and put one together. Still need to try it out this week.

Here's the repo for it:

[https://github.com/pandax381/PACKDROP](https://github.com/pandax381/PACKDROP)

</comment><comment><USER3> A little over 10 years ago I was on an engineering internship and worked on a NASA project that was part of the overall goal of converting ad hoc links to being IP-based. I wrote a test tool which allowed simulating long distance and/or unreliable links. You could specify chains of filters on the command line for both uplink and downlink, as well as introduce taps. The reason I couldn't use an off-the-shelf tool was that by "long distance" I mean "interplanetary". It's one thing to introduce a delay/drop, but my tool simulated the possibility of gigabytes of data being "in flight" along the link.

<comment><USER4> This for others following along more than you, but the work that Luigi Rizzo did on IPFW [1] and FEC (forward error correcting codes) for internet scale video delivery is amazing.

I used ipfw (my router was running FreeBSD) to give ICMP traffic 300ms of jitter and 5% packet loss. Enough to make my DSL endpoint sour enough that the hack attempts went to zero. They would scan with ping, decide that my link was garbage and move on.

[1] [https://github.com/luigirizzo/dummynet](https://github.com/luigirizzo/dummynet)

[2] [http://www.iet.unipi.it/l.rizzo/research.html](http://www.iet.unipi.it/l.rizzo/research.html)

</comment></comment><comment><USER5> Very interesting. The author may also be able to use throttling functionality on the Network tab of Firefox dev tools. I think chrome has something similar. It probably won't simulate disconnects through. Using ip tables works nicely.

I found webrtc to be quite tricky to get working. It feels like a house of cards when you're starting out but it genuinely does work if you persist. Kudos to the community for making a truly amazing technology. STUN is magical.

</comment><comment><USER6> This could be improved so that it can simulate noisy lines, not just connection interruptions, by injecting noise (random data) into the data path. The amount of random data/time could be mapped to a "crappiness" control and be used to test either hardware appliances or software protocols for resilience against data corruption. Pretty sure this already exists though as an old friend of mine developed something like that to be used on serial lines over 25 years back.

</comment><comment><USER7> This is really interesting.

I've been playing about with trying something like this as well, but as an experiment to see how considerate I would be of spending time online if I was to be tied down by loading times like back when using dial-up, if/how my habits would change.</comment>