1,311 karma · joined June 13, 2012
Ideally there wouldn't be a tradeoff, but in practice it seems like there is one.
Now obviously, every country has its own agenda, but there are (arguably) stronger reasons to be concerned about China than most others. They are undemocratic and suppress significant parts of their population (the Uighurs, Tibetans, Christians, ..), don't believe in free speech or freedom of religion, but also have a large economy and military presence. Now of course, other countries are not saints, but the differences with China (and in particular its disregard for human rights) make future disagreement much more likely.
We've started using Typescript a lot for http-templating style use cases (instead of Play) and I'd lean towards Go for the pure networky stuff. Combined these give a much better experience than Scala for our types of use cases.
Edit: just to add, the comment in this thread https://news.ycombinator.com/item?id=19608498 does a much better job of explaining all the benefits of CSS-in-JS.
You are definitely right that there are still challenges around how you structure and re-use JSX components.
However, our primary motivation with CSS-in-JS was to achieve decoupling between different parts of the page when it comes to CSS. I.e. if I change this part of page A, will I break other parts of the page? Or even, will I break something on a completely different page? By scoping styles to components, CSS-in-JS helps avoid these kinds of issues. Of course, it introduces its own complexities.
This is really not an academic concern on a large website with daily commits by developers often from different teams and not necessarily experts in CSS. Only last week I had to fix an issue of this kind.
For example, if I have a new workload that won't fit on existing hardware with AWS, I can either: a) reserve the new instances, or b) not reserve on the assumption I will be able to optimise in the 'near' future.
In practice this is hard to know but AWS forces you to come to a correct decision up front, whereas Google Cloud allows you to not have to answer this up front without being punished later for making the 'wrong' choice.
To give some more context, I work for a big media company on the main website team. We have a lot of developers contributing to the codebase. So AMP(ish) seems attractive as one way of introducing discipline/preventing an explosion of client-side ad-hoc behaviour over time.
* CSS-in JS isn't gatekeeping; there are huge benefits to breaking the global CSS model, which these articles seem to ignore, which is surprising to say the least
* the market reality is that most companies are better off with 'full-stack' people - the need adaptable people, who can get things done, albeit not always with the perfect approach
To ignore these and instead point to gender bias seems bizarre.
https://en.wikipedia.org/wiki/John_Stuart_Mill.
So it's really not a US/Europe thing at all - both very much value negative liberty, although it is probably fair to say that Europe also values positive liberty a bit more. It's more about the role of corporations. The US seems to view corporations as almost equivalent to people, whereas in Europe more often they are viewed as quite separate. And Europe has a broader definition of harm around monopolies than the US does currently at least, especially around the importance of data protection (but again both in respect to negative liberty).
I'd say this is all good stuff, and in most cases we were already doing it, but it is difficult to retrofit in one go.
Going forward it will be a lot easier though as new projects will simply be designed better from a security-perspective.
Personally, for a lot of my current use cases (APIs) I'm veering towards Go more and more as I find it a lot more productive.
This feels far better than the current model used in most languages. If you've ever had struggles creating an uberjar you know this pain.