1. 2

    This doesn’t feel like a review as much as if feels like Intel bashing and AMD advertising. I’d like to see more data from actually using the device.

    Everything in this article could be assumed from just reading the specs, I think.

    1. 3

      when clicking through to the pages after the first, there are benchmark results: https://www.phoronix.com/scan.php?page=article&item=amd-linux-2990wx&num=4

      1. 1

        Ooooh, that makes more sense… Not sure if that doesn’t show up on mobile or if maybe I thought it was links to comments?

      2. 3

        Apparently not, considering that the same CPU has a 50% performance penalty on Windows.

        1. 0

          Well, that’s a strawman if I’ve ever seen one.

        2. 2

          This is a problem with posting product reviews (read: hardware news, which is news) here.

          1. 0

            As someone writing an article, I guess it’s difficult to know where to stop the details or not as well. Like, that’s probably a difficult line to draw? Either way, though, I think there’s probably an easy way to tell that I just don’t 100% know how to explain objectively.

        1. 1

          From what I see, there appear to be two distinct camps of Scala developers. The first camp consists of OO devs who are looking for a more modern Java, and the second camp consists of FP devs who are looking for a statically typed functional language on the JVM.

          Nowadays Java is starting to address many of the gaps while Kotlin provides a much simpler alternative that focuses on the features that OO devs are looking for when considering Scala. I imagine that going forward Scala will become a hard sell for the OO crowd. Meanwhile, Scala is starting to have competition on the FP front from Eta which is a Haskell dialect that runs on the JVM and is able to leverage existing Haskell libraries.

          The goal of simplifying the language with Dotty seems like a good idea, but it’s going to create a lot of friction for existing projects similarly to what we’re seeing happening with Python 3. I think that at this point Scala needs to clearly identify what specific problem it addresses that’s not addressed better by other languages.

          1. 3

            I think your assessment that Scala faces pressure from both Java/Kotlin as well as functional languages is spot on.

            https://www.benfrederickson.com/ranking-programming-languages-by-github-users/ indicates that Scala lost 20% of its active users within a year, while Kotlin tripled its amount of active users, surpassing Scala by a large margin already.

            The goal of simplifying the language with Dotty seems like a good idea […]

            That’s not going to happen. The promises on conference slides do not reflect the reality.

            There are already 6 or 7 new keywords, not speaking of other additions, and the cleanups do not depend on Scala 3 at all – in fact many of them have been implemented (and shipped behind a flag) for years already.

          1. 4

            My sense from using Scala professionally for the past approximate five years has been that most of the interests in building out tooling, infrastructure, etc. in that community are predominantly business-driven. That is, the Scala community tends to produce accelerators as a side effect of business need, not ars gratia artis, as many other communities do: Haskell, Rust, Go, etc. Or, somebody produces something once and doesn’t update it and doesn’t have the resources or skills to build a community around a much used project. This is not a condemnation of maintainers who don’t maintain, but rather a failure of the Scala community to produce a group of curators — people who will take on the load when maintainers abdicate —as well formed and intentional as many other communities have, or a culture of curation. “Disarray” is too strong of a word, but as someone who moves between four languages daily, I can compare communities and their resources pretty well and conclude that my technical decision to use Scala is sound while the political decision frustrates me at times.

            1. 4

              I think it couldn’t be farther from the truth.

              The main source of the embarrassing cycle of “Hype – Failed Promises – Abandonment – The Shiny New Thing – Hype – …” is in fact coming from the academic side.

              To be clear: I’m not blaming students that they drop their work and completely disappear the minute they handed in their thesis, and let other people deal with the consequences. That’s just the way it is.

              The problem is the ease with which they can get things added to the language/library, especially compared to the scrutiny outside contributions regularly receive.

              This pattern has repeated over and over, and I think it’s one of the unchangeable parts of the language/community.

              If you care about a quality, documentation, tooling, then Scala isn’t the right language for you. Simply because “we managed to ship a new version of Scala without breaking every IDE” is not a topic you can write a paper of.

              1. 1

                This is a very important point and I’m glad that you wrote it out.

                Would you say that the Scala ecosystem has a continuity problem because businesses and academia are focused primarily on the now and not necessarily building the road ahead for the community and then maintaining those roads once built?

                1. 6

                  Think of it like this:

                  The core open-source community is the pizza dough that provides long-term stability and maintenance, and the academia/businesses provide the toppings.

                  Some languages have a large base of long-term, open-source contributors – they are family-sized pizzas which can accommodate a lot different toppings. People can get their favorite piece, everyone is happy.

                  Scala is different. It has barely any substantial open-source contributors remaining – and everyone is fighting over the toppings to be placed on that coin-sized piece of pizza dough. As a result the kitchen is a complete mess, and nobody is happy.

                  Scala’s problem is not the focus of businesses or academia, but that it doesn’t have any focus on it’s own.

                  There is literally no one left (since Paul walked away) who is able to establish or uphold any kind of technical standards, or tell people “no, we are not adding another 6 new keywords to the language”. Heck, they couldn’t even get their compiler test suite green on anything newer than Java 8, but they kept publishing new versions anyway since 2017!

              2. 2

                conclude that my technical decision to use Scala is sound while the political decision frustrates me at times.

                Of course you would claim it’s sound, but is that objective? What do you base that decision on? Genuinely curious here.

                1. 2

                  Thanks for asking. I based my decision mostly on architectural analysis with a healthy dose of personal experience. We’re building a new product with cloud and on-premises components. Originally, I’d intended to build everything from scratch but my team identified some OSS that did 100% of we needed with some extra complexity in managing it. The trade-off was a much faster time to delivery in exchange for playing in someone else’s sandbox and by their rules. That aspect was worth it but I lament not being able to write it all in Scala!

                  However, our cloud services are written mostly in Scala. We have a few stateless microservices for which Scala was a great fit: high-performance OOTB for what within six months will be ~500 req/s and within two will likely exceed 4,000 req/s for one component with another being far more I/O bound. We’re integrating heavily with ecosystems that have Java libraries and we’ve found decent Scala wrappers that give us idiomaticity without building and maintaining them ourselves. We could have used just about any stack for these couple of services but Scala’s enabled us to express ourselves in types and exploit the advantages of functional programming. I’m chasing the holy grail of “it’s valid because it compiles” but we’ve got enough unit tests to complement our design that I’m pretty sure we’re on the right track.

                  One notable failure was on service that is primarily a user-interactive web app. We had two false starts with Scalatra, which we’re using for the other services, and Play! before switching to Ruby on Rails (temporarily) out of frustration with documentation, lack of examples, lack of drop-ins like what are commonly available in the Rails ecosystem, from whence I came many moons ago. We chose Rails because of the component owner’s experience with it as well as my experience with it and JRuby, knowing that if we started to implement any shareable logic, we could do so in a way that all of our apps could consume. We learned about Lift too late and http4s and some others didn’t give us the right impression for a web app. I just learned about Udash last week and it may be a candidate for replacement. However, it’ll be several months: even uttering R-E-W-R-I-T-E would be kiboshed from on high at the moment as the component does what we need right now.

                  Moving forward, we’ll be looking at moving some of these services to http4s, etc. once more of my team is comfortable with more hardcore Scala FP. Writing AWS Lambda functions in Rust is also on my radar, as a part of our on-prem product is written in Rust.

                  1. 1

                    Out of curiosity, did you evaluate Elixir? The obvious draw is the Ruby-like syntax but it seems that the Phoenix framework has a great concurrency story on top of being a Rails-inspired ‘functional MVC’ framework.

                    1. 1

                      There was a running joke on my team and another about us throwing everything away and doing it all in Elixir! I mused about it a little but decided that we were better off in RoR because we can hire for it more easily if we ended up committing to the RoR implementation long-term and because we could run RoR on JRuby as a transition step back to Scala, should we have enough business logic to merit a shared implementation. So far, the latter hasn’t been the case since the app is 95% CRUD.

                      I’d really like to see an analysis of the websocket concurrency story of Elixir, Scala, and Rust, with perhaps some others for more general applicability. Our app is using good ol’ fashioned HTTP requests right now but we’ve identified some opportunities to shave some transfer overhead by switching to websockets eventually.

                      1. 1

                        That’s funny. I guess Elixir has some visibility in this space. I’m planning to use it to build a proof-of-concept. For me it’s the developer experience, combined with the performance and concurrency profile. Here are some comparisons: https://hashrocket.com/blog/posts/websocket-shootout

                        More results available here: https://github.com/hashrocket/websocket-shootout

                        1. 1

                          Thanks for those. I’m sad that they’re out of date but the info is useful nonetheless.

                2. 2

                  I don’t think that’s fair at all. There are a number of actively maintained projects that are at the center of the community.

                  I do think there are relatively few well maintained libraries outside of that core, but I think that’s a result of the community being relatively small, and the escape hatch of having java libraries available to do almost everything.

                  Community (non corporate) projects and organizations:

                  • All typelevel projects
                  • monix
                  • Scalaz
                  • Sbt
                  • Ensime

                  All widely used, all with large contributor bases.

                  Additionally the alternative compilers, scalajs and scala native.

                  1. 4

                    At least from my perspective it seems that:

                    • Typelevel is more busy in dealing with US politics than writing software,
                    • Monix is largely a one-man show,
                    • Scalaz is one of the main departure points for many people that move to Haskell,
                    • Sbt is so great that everyone is trying to replace it, and
                    • Ensime …? You just literally read the article by the Ensime creator.
                    1. 2

                      I do think there are relatively few well maintained libraries outside of that core

                      The Scala community does have a solid core and near-core extension community. I consider libraries like Monix, Cats, and Scalaz to be nearly a part of the standard library because of how often they are used. sbt and ensime are important but they’re not exceptional: every stack needs a build tool and editor integration. These are solid now, and I appreciate the work that goes into them. Frankly, it wasn’t until sbt hit 1.0.0 that I considered it ready for widespread use because of its obtuseness/unergonomic interface prior to then. I’m eager to see what Li Haoyi’s mill will become.

                      Things I’ve noted in the past that I’ve found in a less-than-desirable state compared to other stacks:

                      • Internationalization - fragmented ecosystem, sbt plugins outdated
                      • Authentication & Authorization - no nearly drop-in solution like Devise in the RoR ecosystem
                      • Project websites being down for weeks because someone forgot to re-up the TLS cert, even in a LetsEncrypt automation world
                      • Out of date documentation to the point of being dangerous practices with little more than a “someone submit a PR to fix that”. I get that maintainers get busy but when safety is the topic, is it acceptable to wait for a drive-by contributor to get it right and contribute the correction? What if they do that and then no maintainer merges it for years?

                      The Scala Center has the promise of addressing much of it but I speculate that it’s insufficiently funded to be the ecosystem plumbers and teachers it aspires to be. I’ve been impressed with its work so far, though.

                  1. 9

                    Please note this is from April; a lot has happened.

                    This week, the networking WG is supposed to be making some posts overviewing the state of play as it is today. We have landed futures in the core library as well as the first implementation of async/await in the compiler. Still more work to do, though!

                    1. 2

                      Exciting! What’s the best way to stay up to date on all this?

                      1. 4

                        This Week in Rust collects the latest news, upcoming events and a week-by-week account of changes in the Rust language and libraries.

                        The Rust Blog is where the Rust team makes announcements about major developments.

                        And nearly everything happening in Rust is discussed on the unofficial subreddit, /r/rust.

                        1. 2

                          Probably following the network working group newsletter; one should be out this week with a summary of where we’re at with everything, and what is left to be done. I’ll make sure it gets posted to lobste.rs.

                          1. 1
                          2. 1

                            So what’s the current state regarding implicit vs. explicit execution? Last time I checked there were both explicit executors and poll.

                            1. 2

                              I think you’re asking about Tokio; the standard library doesn’t provide an executor. The executor is implicit. You still call tokio::run, but that’s it. See here: https://tokio.rs/blog/2018-03-tokio-runtime/

                              poll is still the core of how Futures works. https://doc.rust-lang.org/nightly/std/future/trait.Future.html

                              1. 3

                                So future.map(...).filter(...) won’t start executing until it is polled explicitly? I found the documentation to be somewhat silent on that.

                                1. 1

                                  Yep!

                                  1. 1

                                    Thanks, good to hear.

                          1. 23

                            TL;DR:

                            • Scala is losing interest, mind share and contributors.
                            • Competition for adoption comes from multiple angles: Kotlin, Java, Haskell.
                            • Scala 3 is not the savior.
                            • Focus on addressing issues people actually have, instead of producing papers with academic novelties.
                            • Decision-making and development shouldn’t be lead by people who don’t have any skin in the game.
                            • Sacrifice half the community, send them to Kotlin.
                            • Focus on having fewer, better features to make Scala a great FP language.

                            (Best effort, corrections welcome.)

                            1. 2

                              for extra clarity - sacrifice the object-oriented half of the community in favor of the functional half (with the OO half going to Kotlin)

                            1. 14

                              This blog post: a case study in being a jerk to someone who is being a jerk, only since Linus is a “jerk” you get off scott-free. Unsurprisingly, this is written by someone who has never contributed to the Linux kernel and who was uninvolved in the discussion he’s picking apart.

                              The revised email at the end does lose information. Contrary to what hipsters write blog posts complaining about, 99% of Linus’s emails are cordial. The information that’s lost is the conveyance that this is more important to Linus than most subjects.

                              1. 20

                                This comment: a case study in being a jerk to someone who is being a jerk to a jerk.

                                In all seriousness, I don’t believe that Gary Bernhardt is being a jerk at all. There’s a line between being critical of a piece of work and calling someone brain damaged, and hopefully, we all can see the difference.

                                Aside: I love when people use the word “hipster” to invalidate other viewpoints. Apparently, there are two modes of being: Being Right and Being A Hipster.

                                1. 2

                                  To the unserious comment, I don’t think I was being a jerk. I called him a jerk, which I guess you could argue is a jerk move under any circumstances, but if I’m being a jerk then so is Gary.

                                  To the serious comment, I just want to note that “brain damaged” is a meme among old school hackers which isn’t as strong of a word as you think.

                                  To the aside, I don’t use hipster as an insult or to imply wrongness, but I do use it to invalidate his point. Gary is a Ruby developer. Linus is a kernel developer. The worlds are far removed from each other.

                                  1. 50

                                    I’ve put tens of thousands of lines of C into production, including multiple Linux kernel drivers. In one case, those kernel drivers were critical-path code on a device used in strain testing the wings of an airplane that you might’ve flown in by now.

                                    I’m not a stranger to the kernel; I just left that world. Behavior like Linus’ in that email was part of the reason, though far from the only reason.

                                    With all of that said: having written a bunch of systems software shouldn’t be a prerequisite for suggesting that we avoid attacking people personally when they make programming mistakes, or what we suspect are programming mistakes.

                                    1. 10

                                      Exactly. I’ve also met many people that do high-performance, embedded, and/or safety-critical code in C that are more polite in these situations. Linus’ attitude is a separate issue from what’s necessary to evaluate and constructively criticize code.

                                    2. 17

                                      “brain damaged” is a meme among old school hackers which isn’t as strong of a word as you think.

                                      Yikes. That “meme” is a whole other thing I don’t even care to unpack right now.

                                      I don’t use hipster as an insult or to imply wrongness, but I do use it to invalidate his point. Gary is a Ruby developer. Linus is a kernel developer. The worlds are far removed from each other.

                                      Gotcha. Kernal developer == real old-school hacker. Ruby developer == script kiddie hipster. Are we really still having this argument in 2018?

                                      1. 2

                                        Yikes. That “meme” is a whole other thing I don’t even care to unpack right now.

                                        “Brain damaged” is a term from back in the Multics days, Linus didn’t make that one up for the occasion. If you’re unfamiliar with the “jargon file” aka hacker dictionary, you can see the history of this particular term here: http://www.catb.org/jargon/html/B/brain-damaged.html

                                        1. 1

                                          Yikes. That “meme” is a whole other thing I don’t even care to unpack right now.

                                          Listen, cultures are different and culture shock is a thing. I’m in a thread full of foreigners shocked that customs are different elsewhere. You better just take my word for it on “brain damaged” because you clearly aren’t a member of this culture and don’t know what you’re talking about.

                                          Gotcha. Kernal developer == real old-school hacker. Ruby developer == script kiddie hipster. Are we really still having this argument in 2018?

                                          How about you quit putting words in my mouth? Do you really need me to explain the world of difference between Ruby development and kernel hacking? In 2018? It’s not a matter of skill. Gary is great at what he does, but it has almost nothing to do with what Linus does. The people who surround Gary and the people who surround Linus are mutually exclusive groups with different cultural norms.

                                          1. 20

                                            You can’t use “it’s our culture” as a panacea; calling someone an idiot, moron etc. is a deliberate attempt to hurt them. I guess if what you’re saying is, “it’s our culture to intentionally hurt the feelings of people who have bad ideas,” well, then we might be at an impasse.

                                            1. 21

                                              The kind of toxic exclusivity and “old school hacker culture” elitism that you’re spouting in this thread is not what I expect to see on Lobsters. It makes me genuinely sad to see somebody saying these things and it also makes me apprehensive of ever being involved in the same project or community as you. Software development today is not what it was 20 –or even 5– years ago. Today it is far more about people than it is about software or technology. You may not like this, but it is the reality.

                                              1. 7

                                                Lobste.rs always had a few vocal people like this in threads. But note that they’re in the minority and generally are not upvoted as much as the people who aren’t elitist, racist, or just generally being a jerk.

                                                1. 5

                                                  “old school hacker culture” elitism

                                                  Near 40, I can agree to be called old. But not elitist.
                                                  And I cannot accept to be associated with racist.

                                                  Not all software developers are hackers. Not all hackers are software developers.

                                                  Is stating this “elitism”? Is it “racism”? Is it being “jerk”?
                                                  Or is just using terms properly?

                                      2. 5

                                        The information that’s lost is the conveyance that this is more important to Linus than most subjects.

                                        So add “I want to stress that this issue is really important to me” at the end of the revised email.

                                        I think that making an issue out of this particular information being lost is missing the point - that it would be possible to say the same thing as Linus did without being abusive.

                                        Contrary to what hipsters write blog posts complaining about

                                        You’re falling into the same trap that the post discusses. This derision isn’t necessary to make your point, and doesn’t make it any stronger - it just adds an unnecessary insult.

                                        1. 9

                                          Contrary to what hipsters write blog posts complaining about, 99% of Linus’s emails are cordial.

                                          That may well be true, but do we need that last 1% in a professional setting?

                                          1. 9

                                            (I am not defending Linus’ behaviour here, please don’t put those words in my mouth.)

                                            I strongly take issue with American ideas of “professionalism”, and an even more so with the idea that we get to decide whether this project is “a professional setting” or not. What exactly makes this a “professional setting”? What is a “professional setting”? Why do we hold some interactions to higher standards than others?

                                            I suspect “money changing hands” is the thing that makes this “a professional setting”, and that grinds my gears even further. Why are we supposed to hold ourselves to different standards just because some people are getting paid for doing it?

                                            1. 3

                                              Right, “professionalism” implies that you only need to be nice to somebody when you want them to something for you or want their money. This should actually be about “respect”, whether or not you want a Linux contributor to do something for you or want their money.

                                            2. 12

                                              The Linux kernel is not a professional setting. Besides, I argue that the 1% is useful, even in a professional setting - sometimes strong words are called for. I’ll be That Guy and say that people should grow a thicker skin, especially people who weren’t even the subject of the email and have never been involved in kernel development.

                                              1. 14

                                                If I look at who the contributors to the Linux kernel are, it would certainly appear to be a professional endeavor.

                                                A large chunk of contributions to the kernel are made by people who are getting paid by the companies they work for to contribute. Sounds like a professional setting to me.

                                                1. 4

                                                  Linux development is only “a professional endeavour” (which is a phrase I have strong issues with, see above) because some people decided to build their businesses in Linus’ craft room. We can like or dislike Linus’ behaviour, but we don’t get to ascribe “professionalism” or lack thereof (if there even is such a thing) to Linus’ work or behaviour, or that of any of the contributors.

                                                  Even if “professionalism” is an actual thing (it’s not; it’s just a tool used by people in power to keep others down) it’s between the people doing the paying, and the people getting the pay, and has nothing to do with any of us.

                                                  This idea that people should behave differently when there’s money involved is completely offensive to me.

                                                  1. 7

                                                    But it’s not. It’s a collaboration between everyone, including professionals and hobbyists. The largest group of kernel contributors are volunteers. On top of that, Linus doesn’t have to answer to anyone.

                                                    1. 8

                                                      So, having a hobbyist involved means that you can be dickhead? Is that the conclusion that should be drawn from your statements?

                                                      1. 3

                                                        No. I’m saying that Linus is not a dickhead, Linux is not a professional endeavour, and neither should be held to contrived professional standards.

                                                        1. 2

                                                          “I’m saying that Linus is not a dickhead”

                                                          His comments are proving otherwise given the main article shows the same information could’ve been conveyed without all the profanity, personal insults, and so on. He must be adding that fluff because he enjoys it or has self-control issues. He’s intentionally or accidentally a dick. I say that as a satirist whose a dick to people that give me headaches in real life. Although it doesn’t take one to know one, being someone whose always countering dicks and assholes with some dickish habits of his own makes what Linus is doing more evident. If no mental illness, there’s little excuse past him not giving a shit.

                                                          1. 5

                                                            “doesn’t behave according to my cultural norms” == “mental illness”

                                                            Seriously?

                                                            I would really appreciate it if you could stop expecting that your cultural norms have to apply to everyone on the planet.

                                                            1. 1

                                                              Im identifying the cultural norm of being an asshole, saying it applies to him at times, and saying the project would benefit if he knocked if off. Im not forcing my norms on anyone.

                                                              Your comment is more amusing giving someone with Linus’s norns might just reply with profanity and personsl insults. Then, you might be complaining about that. ;)

                                                              1. 1

                                                                Then, you might be complaining about that. ;)

                                                                No, I’d just accept that people from different cultures behave differently.

                                                                Let’s face it, most people hate getting told they are wrong, regardless of the tone. That’s just how we are as humans.

                                                                Taking offense about the tone just seems very US-specific, as they are accustomed to receiving some special superpowers in a discussion by uttering “I’m offended”.

                                                                Some of the best feedback I received in my life wouldn’t be considered acceptable by US standards and I simply don’t care – I just appreciate the fact that someone took his time to spell out the technical problems.

                                                                Here is a recent example: https://github.com/rust-lang/cargo/pull/5183#issuecomment-381449546

                                                                1. 1

                                                                  Here is a recent example: https://github.com/rust-lang/cargo/pull/5183#issuecomment-381449546

                                                                  I’m not familiar with Rust, so maybe I’m missing crucial context, but I read this feedback as firm but unproblematic overall. Compared to Linus’ email:

                                                                  • Comment admits that there are multiple points of view, gives case for their take on it.
                                                                  • Focuses on the problems at hand rather than speculating on characteristics of any individuals involved, beyond acknowledging other viewpoints.
                                                                  • Doesn’t include any personal insults.
                                                                  • Doesn’t include any profanity that I noticed, certainly not gratuituous profanity.

                                                                  It could be nicer, sure. But it seemed respectful, in the “you can do what you’re doing but consider these things:” kind of way…? The author event went out of their way to acknowledge being unconstructive.

                                                                  To my reading it seemed closer to Gary’s email than Linus’.

                                                                  To put it another way: if Linus wrote emails like this (only shorter, probably) then I don’t think Gary would have written a blog post about it.

                                                                  (For the record: I’m not American, but I do fall on the gee-it’d-be-great-if-Linus-stopped-abusing-his-colleagues side of this debate.)

                                                                  1. 1

                                                                    I didn’t intend to imply that this was comparable to Linus’ mail, but that people who would be offended by Linus’ writing would also be offended by that comment.

                                                                    It’s a slippery slide where every honest-to-go comment that expresses real feelings starts getting replaced by “this is an interesting idea, but did you consider …” corporate lingo, even if the code is horribly wrong.

                                                                    1. 2

                                                                      I didn’t intend to imply that this was comparable to Linus’ mail, but that people who would be offended by Linus’ writing would also be offended by that comment.

                                                                      I understand this is your point, but I think there is no evidence for this. The people complaining about Linus’ conduct are complaining about specific things, and these things are not present in the comment you linked.

                                                                      Did anyone in the Rust community (generally considered a “nicer” community than kernel development) raise concerns about this comment?

                                                                      There is a difference between “not overtly nice” and “openly abusive”, even accounting for cultural context.

                                                                  2. 1

                                                                    Then you and I arent that different in how we look at stuff. Ive just layered on top of it a push for project owners to do what’s most effective on social side.

                                                              2. 2

                                                                I believe it’s intentional. He does not want to be bothered by nurturing the newbs, so he deters them from going to him directly and forces them to do their learning elsewhere.

                                                              3. 2

                                                                These numbers suggest it is a professional endeavor:

                                                                https://thenewstack.io/contributes-linux-kernel/

                                                                1. 2

                                                                  Those numbers just break down the professionals involved, and don’t consider the volunteers. If you sum the percentages in that article you get around 40%. Even accomodating for smaller companies that didn’t make the top N companies, that’s a pretty big discrepancy.

                                                        2. 6

                                                          Linus himself is working in a professional capacity. He’s employed by the Linux Foundation to work on Linux. The fact he is employed to work on an open source project that he founded doesn’t make that situation non-professional.

                                                    1. 2

                                                      The thing I would really like to understand – and somehow no one is able to explain – is how equality and identity works with specialized generics and value types.

                                                      E. g. if you have code like this:

                                                      class Cell<T> {
                                                          T value;
                                                          Cell(T val) {
                                                              value = val;
                                                          }
                                                          boolean contains(T that) {
                                                              return (this.value == that) || (this.value.equals(that));
                                                          }
                                                      }
                                                      

                                                      … and now make it specialized:

                                                      class Cell<any T> {
                                                          T value;
                                                          Cell(T val) {
                                                              value = val;
                                                          }
                                                          boolean contains(T that) { ??? }
                                                      }
                                                      

                                                      How would the implementation of contains look like?

                                                      What would be the semantics?

                                                      Would Cell<Double> and Cell<double> behave identical?

                                                      1. 1

                                                        My guess would be that every value type can be boxed, much like the existing primitives.

                                                        1. 1

                                                          But in which situations would it be boxed?

                                                          Will == be boxed? If yes, how would you recover IEEE equality for floating points, and if it wasn’t boxed, then all generic code would subtly change behavior when people start specializing their generics.

                                                          1. 2

                                                            Maybe I’m misunderstanding your point, but since generics assume everything extends Object, you’d use .equals() instead of ==, and the boxed value type would generate the appropriate logic inside of .equals().

                                                            1. 1

                                                              But how would that “appropriate logic” look like?

                                                              I think the problem is that == does two completely different things on reference types and value types, and while you can implement equals for value types (even without boxing), you can’t really recover == in a generic context that allows both reference and value types.

                                                      1. 19

                                                        As with most of Gary Bernhardt’s writing, I loved this piece. I read it several times over, as I find his writing often deeply interesting. To me, this is a great case study in judgement through attempting to apply Americanized principles to speech between two non-Americans (a Pole and a Finn) communicating in a second language.

                                                        There are several facets at play here as I see it:

                                                        1. There’s a generational difference between older hackers and newer ones. For older hackers, the code is all that matters, niceties be damned. Newer hackers care about politeness and being treated well. Some of this is a product of money coming in since the 90s, and people who never would’ve been hackers in the past are hackers now.

                                                        2. Linux is Linus’ own project. He’s not going to change. He’s not going to go away. If you don’t like the way he behaves, fork it. Run your own Linux fork the way you want, and you’ll see whether or not the niceties matters. Con Kolivas did this for years.

                                                        3. There are definitely cultural issues at play. While Linus has a lot of exposure to American culture, he’s Finnish. Finnish people are not like Americans. I find the American obsession with not upsetting people often infuriatingly two-faced, and I’m British. I have various friends in other countries who find the much more minor but still present British obsession with not upsetting people two-faced, and they’re right.

                                                        Go to Poland, fuck up and people will tell you. Go to Germany, do something wrong and people will correct you. Go to Finland, do something stupid getting in the way of a person’s job and probably they’ll swear at you in Finnish. I’m not saying this is right, or wrong, it’s just the rest of the world works differently to you, and while you can scream at the sea about perceived injustices, the sea will not change it’s tides for you.

                                                        Yes Linus is being a jerk, but it’s not like this is an unknown quantity. Linus doesn’t owe you kindness. You don’t owe Linus respect either. If his behaviour is that important to you, don’t use Linux.

                                                        1. 16

                                                          Finnish people are not like Americans. I find the American obsession with not upsetting people often infuriatingly two-faced […]

                                                          • I think this is a false comparison of some sort. Americans worrying doesn’t say anything useful about Finns.
                                                          • I emphatically disagree that Linus is representative of the social culture around me in Finland.
                                                          • Nonviolent, clear communication is not the same thing as avoiding difficult subjects. It’s the opposite!
                                                          1. 5

                                                            I think this is a false comparison of some sort. Americans worrying doesn’t say anything useful about Finns.

                                                            In my experience of dealing with Finns, they don’t sugar coat things. When something is needed to be said, the Finns I’ve interacted with are extremely direct and to the point, compared to some other cultures. Would you say that’s fair?

                                                            I emphatically disagree that Linus is representative of the social culture around me in Finland.

                                                            I didn’t say that he’s representative of Finnish culture. He’s a product of it. He wasn’t raised American. He didn’t grow up immersed in American culture and values. It would be unrealistic to expect him to hold or conform to American values.

                                                            Nonviolent, clear communication is not the same thing as avoiding difficult subjects. It’s the opposite!

                                                            Definitely! Out of interest, what are your thoughts on this in terms of applicability to his communication style? I’m fairly certain there’s a general asshole element to his style, but I wonder how much (if any) is influenced by this.

                                                            1. 1

                                                              He didn’t grow up immersed in American culture and values. It would be unrealistic to expect him to hold or conform to American values.

                                                              As an Italian, I can say that after the WWII, US did a great job to spread their culture in Europe.
                                                              Initially to counter the “Bolsheviks” influx, later as a carrier for their products.

                                                              They have been largely successful.
                                                              Indeed, I love Joplin just like I love Vivaldi, Mozart and Beethoven! :-)
                                                              But we have thousands years of variegate history, so we are not going to completely conform anyway. After all, we are proud of our deep differences, as they enrich us.

                                                              1. 2

                                                                At the risk of getting into semantics, Finland was much more neutral post WWII than other European nations due to realpolitik.

                                                                Also, there is something to say for Italian insults, by far some of the finest and most perverse, blasphemous poetry I’ve ever had the pleasure of experiencing. It’s the sort of level of filth that takes thousands of years to age well :)

                                                                1. 3

                                                                  Actually the Invettiva is a literary gender on its own, that date back to ancient Greek.

                                                                  In Italian, there are several passages of Dante’s Divina Commedia that belong to the genre and are spectacular examples of the art you describe.

                                                                  But since we are talking about jerk, I will quote Marziale, from memory: 2000 years later we still memorize his lines at school

                                                                  Os et labras tibi lingit, Menneia, catellus.
                                                                  Non miror, merdas si libet esse cani.

                                                                  Nothing Linus can say will ever compete! ;-)

                                                                  1. 1

                                                                    Os et labras tibi lingit, Menneia, catellus. Non miror, merdas si libet esse cani.

                                                                    Google translates this as

                                                                    Your mouth and lip licking, Menneas, catelle. I am not surprised, merda, if you like to be for the dog.

                                                                    Which I assume is horribly wrong. Is it possible to translate for us non-worldly folks who only know English? :-)

                                                                    1. 2

                                                                      The translation from Latin is roughly

                                                                      The little dog licks your mouth and lips.
                                                                      Not a surprise: dogs like to eat shits.

                                                                      It’s one of Martial’s Epygrams.
                                                                      Not even one of the worse!

                                                                      It’s worth noticing how nothing else remains of Menneia. And the same can be said of several people targeted by his insults.

                                                                      1. 1

                                                                        Hah, that’s great. Thank you!

                                                          2. 9

                                                            speech between two non-Americans (a Pole and a Finn) communicating in a second language.

                                                            How is that relevant? On my current team, we have developers from Argentina, Bosnia, Brazil, China, India, Korea, and Poland, as well as several Americans (myself included). Yet as far as I can recall from the year that I’ve been on this team so far, all of our written communication has been civil. And even in spoken communication, as far as I can recall, nobody uses profanity to berate one another. To be fair, this is in a US-based corporate environment. Still, I don’t believe English being a second language is a reason to not be civil in written communication.

                                                            1. 7

                                                              You’re comparing Linux, a Finnish-invented, international, volunteer-based non-corporate project to a US-based corporate environment, and judging Linus’ communications against your perception of a US-based corporate environment. You’re doing the same thing as the author, projecting your own values onto something that doesn’t share those values.

                                                              Additionally, by putting the words I’ve said, and following that up with a reference to a US-based corporate environment, you’ve judged the words of a non-American who wasn’t speaking to you by your own US-based corporate standards.

                                                              I hope that helps you understand my point more clearly. My point isn’t that Linus does or doesn’t act an asshole (he does), but that expecting non-Americans to adhere to American values, standards or norms is unrealistic at best, and cultural colonialism at worst.

                                                            2. 8

                                                              For older hackers, the code is all that matters, niceties be damned. [..]
                                                              Some of this is a product of money coming in since the 90s, and people who never would’ve been hackers in the past are hackers now.

                                                              No, people who would’ve never been hackers in the past, are not hackers now either.
                                                              And hackers have always cared about more than code. Hacking has always been a political act.

                                                              Linus is not a jerk, his behaviour is pretty deliberate. He does not want to conform.
                                                              He is not much different from Dijkstra, Stallman or Assange.

                                                              Today, cool kids who do not understand what hacking is, insult hackers while calling themselves hackers.

                                                              Guess what? Hackers do care about your polite corporate image as much as they do care about dress code.

                                                              There are definitely cultural issues at play.

                                                              Not an issue. It’s a feature! Hackers around the world are different.

                                                              And we are proud of the differences, because they help us to break mainstream groupthink.

                                                              1. 2

                                                                Hacking has always been a political act.

                                                                This is a really interesting idea! I’m seeing this kind of idea more and more these days and I haven’t been able to work out what it means. I guess you don’t mean something as specific as “Hacking has always been in favour of a particular political ideology” nor something as general as “Hacking has always had an effect on reality”. So could you say something more precise about what you mean by that?

                                                                1. 3

                                                                  This is a good question that is worth of a deep answer. I’ll rush a fast one here, but I might write something more in the near future.

                                                                  All hacks are political, but some are more evidently so. An example is Stallman’s GNU GPL. Actually the whole GNU project is very political. Almost as political as BSDs. Another evidently political hack was done by Cambridge Analytica with Facebook’s user data.

                                                                  The core value of hackers activity is curiosity: hackers want to learn. We value freedom and sharing as a mean to get more knowledge for the humanity.

                                                                  As such, hacking is always political: its goal is always to affect (theoretically, to improve) the community in one way or another.

                                                                  Challenging laws or authorities is something that follows naturally from such value, but it’s not done to get power or profit, just to learn (and show) something new. This shows how misleading is who distinguish hats’ colours: if you are an hacker you won’t have problems to violate stupid laws to learn and/or share some knowledge, be it a secret military cablage, how to break a DRM system or how to modify a game console: it’s not the economical benefit you are looking for, but the knowledge. The very simple fact that some knowledge is restricted, forbidden or simply unexplored, is a strong incentive for an hacker to try to gain it, using her knowledge and creativity.

                                                                  But even the most apparently innocent hack is political!
                                                                  See Rust, Go, Haskell or Oberon: each with its own vision of how and who should program and of what one should expect from a software.
                                                                  See HTTP browsers: very political tools that let strangers from a different state run code (soon assembly-like) on your pc (ironically with your consent!).
                                                                  See Windows, Debian GNU/Linux or OpenBSD: each powerful operating systems which their own values and strong political vision (yes, even OpenBSD).
                                                                  See ESR appropriation of the jergon file (not much curiosity here actually, just a pursuit for power)!

                                                                  Curiosity is not the only value of an hacker, but all hackers share such value.

                                                                  Now, this is also a value each hacker express in a different way: I want everyone to become an hacker, because I think this would benefit the whole humanity. Others don’t want to talk about the political responsibility of hacking because they align with the regime they live in (be it Silicon Valley, Raqqa, Moscow or whatever), and politically aware hackers might subvert it.

                                                                  But even if you don’t want to acknowledge such responsibility, if you hack, you are politically active, for better or worse.

                                                                  That’s also the main difference between free software and open source software, for example: free software fully acknowledge such ethical (and thus political) responsibility, open source negate it.

                                                                  1. 1

                                                                    Hacking has always been a political act.

                                                                    So if I understand you correctly you are saying something much closer to “Hacking has always attempted to change the world” than “Hacking has always been in support of a political party”.

                                                                    1. 1

                                                                      Politics is to political parties, what economy is to bankers.

                                                                      If you read “Hacking has always been a political act” as something related to political parties, you should really delve deeper in the history of politics from ancient Athens onwards.

                                                                      “Hacking has always attempted to change the world”

                                                                      No.
                                                                      This is a neutral statement that could be the perfect motto/tagline for a startup or a war.

                                                                      Hacking and politics are not neutral. They are both strongly oriented.

                                                                      Politics is oriented to benefit the polis.
                                                                      Indeed, lobbying for particular interests is not politics at all.

                                                                      Hacking is not neutral either.
                                                                      Hacking is rooted in the international scientific research that was born (at least) in Middle Age.

                                                                      Hackers solve human problems. For all humans. Through our Curiosity.

                                                                      1. 2

                                                                        IMO, you’re defining “Hacking is political” to the point of uselessness. Basically, nothing is apolitical in your world. Walking down the street is a political statement on the freedom to walk. Maybe that’s useful in a warzone but in the country I live in it’s a basic right to the point of being part of the environment. I don’t see this really being a meaningful or valuable way to talk about things. I think, instead, it’s probably more useful for people to say “I want to be political and the way I will accomplish this is through hacking”.

                                                                        1. 2

                                                                          Basically, nothing is apolitical in your world.

                                                                          Read more carefully.
                                                                          Every human action can serve the polis, but several human actions are not political.

                                                                          Hacking, instead, is political in its very essence. Just like Science. And Math.

                                                                          Maybe it’s the nature of knowledge: an evolutive advantage for the humanity as a whole.
                                                                          Or maybe it is just an intuitive optimization that serves hackers’ curiosity: the more I share my discoveries, the more brains can build upon them, the more interesting things I can learn from others, the more problem solved, the more time for more challenging problems…

                                                                          For sure, everyone can negate or refuse the political responsibility that comes from hacking, but such behaviour is political anyway, even if short-sight.

                                                                          1. 2

                                                                            I just don’t see it. I think you’re claiming real estate on terminology in order to own a perspective. In my opinion, intent is usually the dominating factor, for example murder vs manslaughter (hey, I’m watching crime drama right now). Or a hate crime vs just beating someone up.

                                                                            You say:

                                                                            As such, hacking is always political: its goal is always to affect (theoretically, to improve) the community in one way or another.

                                                                            But I know plenty of people who do what would generally be described as hacking with no such intent. It may be a consequence that the community is affected but often times it’s pretty unlikely and definitely not what they were trying to do.

                                                                            1. 1

                                                                              Saying that “intent is usually the dominating factor” is a political act. :-)

                                                                              It’s like talking about FLOSS or FOSS, like if free software and open source were the same thing. It’s not just false, it does not work.

                                                                              Indeed it creates a whole serie of misunderstanding and contraddictions that are easily dismissed if you simply recognise the difference between the two world.

                                                                              Now, I agree that Hacking and Engineering overlap.
                                                                              But they differ more than Murders and Manslaughters.

                                                                              Because hackers use engineering.

                                                                              And despite the fact that people abuse all technical terms, we still need proper terms and definitions.
                                                                              So despite the fact that everyone apparently want to leverage terms like “hacking” and “freedom” in their own marketing, we still need to distinguish hackers from engineers and free software from open source.

                                                                              And honestly I think it’s easy to take them apart, in both cases.

                                                                        2. 1

                                                                          Could you help me understand better then your usage of the word “politics” because I don’t think it’s one that I am familiar with.

                                                                          1. 1

                                                                            Good question! You caught me completely off-guard!
                                                                            Which is crazy, given my faculty at University was called “Political Science”!

                                                                            I use the term “Politics” according to the original meaning.

                                                                            Politics is the human activity that creates, manages and preserves the polis.

                                                                            Polis was the word ancient Greeks used for the “city”, but by extension we use it for any “community”. In our global, interconnected world, the polis is the whole mankind.

                                                                            So Politics is the set of activities people do to participate to our collective life.

                                                                            One of my professors used to define it as “the art of living together”.
                                                                            Another one, roughly as “the science of managing power for/over a community”.

                                                                            Anyway, the value of a political act depends on how it make the community stronger or weaker. Thus politics is rarely neutral. And so is hacking.

                                                                            1. 2

                                                                              Thanks a lot. That does make things clearer. However I am still confused why under the definition of “Politics is the human activity that creates, manages and preserves the polis.” I admit that I don’t understand what ‘Saying that “intent is usually the dominating factor” is a political act’ but at least I now have a framework in which to think about it more.

                                                                2. 4

                                                                  That’s very good explanation. I might add:

                                                                  • The author has the luxury of not having to worry about people dying because they didn’t get the message.
                                                                  • The author has the luxury of only caring about the message being understood by his own cultural sub-group.

                                                                  Linus has none of these luxuries. He cannot err on the side of being too subtle.

                                                                  This blog post is just another instance of an American that believes that the rest of the world has to revolve around his cultural norms.

                                                                  1. 7

                                                                    I think the author did a pretty good job of editing the message in such a way that it was more clear, more direct, and equally forceful, while ensuring that all of that force was directed in a way relevant to the topic at hand.

                                                                    (Linus has strong & interesting ideas about standardization & particular features. I would love to read an essay about them. The response to a tangentially-related PR is not a convenient place to put those positions: they distract from the topic of the PR, and also make it difficult to find those positions for people who are more interested in them than in the topic of the PR.)

                                                                    The resulting message contains all of the on-topic information, without extraneous crap. It uses strong language and emphasis, but limits it to Linus’s complaints about the actually-submitted code – in other words, the material that should be emphasized. It removes repetition.

                                                                    There is nothing subtle about the resulting message. Unlike the original message, it’s very hard to misread as an unrelated tangent about standardization practices that doesn’t address the reasons for rejecting the PR at all.

                                                                    The core policy being implemented here is not “be nice in order to avoid hurting feelings”, but “remove irrelevant rants in order to focus anger effectively”. This is something I can get behind.

                                                                  2. 2

                                                                    I find the American obsession with not upsetting people often infuriatingly two-faced, and I’m British.

                                                                    […]

                                                                    Go to Poland, fuck up and people will tell you. Go to Germany, do something wrong and people will correct you. Go to Finland, do something stupid getting in the way of a person’s job and probably they’ll swear at you in Finnish.

                                                                    Just wanted to point out that America is a huge country and its population is not homogenous. For example, you could have replaced Poland, Germany, and Finland with “Boston” and still have been correct (though, they’d just swear at you in English 🙂).

                                                                    I think because most American tech comes out of San Francisco/Silicon Valley that it skews what is presented as “Americanized principals” to the international tech community.

                                                                    1. 2

                                                                      Just wanted to point out that America is a huge country and its population is not homogenous.

                                                                      Down here in the South, they have an interesting mix of trying to look/sound more civil or being blunt in a way that lets someone know they don’t like them or think they’re stupid. Varies by group, town, and context. There’s plenty of trash talking depending on that. Linus’s style would fit in pretty well with some of them.

                                                                    2. 1

                                                                      If his behaviour is that important to you, don’t use Linux.

                                                                      Rather don’t develop the kernel. One can use Linux without having ever heard the nettle Torvalds (the majority I guess)

                                                                    1. 17

                                                                      WebUSB is a mistake.

                                                                      And with WASM, we will have even less chance of catching malware that can leverage it.

                                                                      1. 12

                                                                        Do not fear, people will implement WASM time-sharing systems, so you can not only execute random people’s code on your machine, you can also run a WASM anti-virus solution alongside!

                                                                        1. 6

                                                                          What’s the connection to WASM?

                                                                          1. 3

                                                                            The dangers of exposing APIs like web USB are compounded with performant and inscrutable blobs run in the browser. Thus, WASM exacerbates these issues.

                                                                            1. 13

                                                                              Is WASM more inscrutable than obfuscated JS?

                                                                              My experience that we suffer far more from the fact that we have no idea when a payload is delivered, since a web server can serve distinct content to every viewer, than we do from the fact that some payloads are difficult to untangle.

                                                                              1. 3

                                                                                I’ve seen arguments like this before but never fully understood them. It seems to me like asm.js is just as inscrutable as WASM, but it’s more annoying to work with for a couple reasons:

                                                                                • It’s fast, but somewhat inconsistently so as compared to WASM
                                                                                • Large download size

                                                                                Not to mention all of the minifiers and manglers that exist for conventional JS. Why the WASM hate? It seems more useful to programmers than the alternatives, and we’re already paying the security cost of running untrusted executable code from the internet in browsers today.

                                                                                1. 2

                                                                                  asm.js is similarly gross, but people appear to be moving to its successor WASM.

                                                                                  Reversing minified and mangled JS is, I submit, a different level of inconvenient from reversing bytecode–especially bytecode that can suddenly leverage other language ecosystems obfuscation tools and technique. Just because they’re different levels of inconvenient doesn’t make one more acceptable than the other.

                                                                                  As for the security cost–look, a lot of attacks and nastiness open themselves up once you can leverage that improved performance. Spectre/Meltdown were directly enabled by better performance primitive for timing and shared array buffers, and yet some people refuse to acknowledge the problems they pose by their very existence.

                                                                                  I’ve griped about this all before, and at this point I’m basically resigned to the idea that fanboys and nerds more excited about performance and shiny and their chance to leave their teeny mark on the web ecosystem than about user security and rights and conservative engineering are probably going to win on this in the end.

                                                                                  :(

                                                                                  1. 4

                                                                                    I get the woes of security on the web — it’s really, really hard to make running untrusted code secure, especially with the “dancing pigs” problem. My point with asm.js, though, was that WASM doesn’t add anything new: before WASM, people were compiling to a fast subset of JavaScript, and that was equally difficult to decompile. And that really puts the problem squarely back in “running untrusted code securely is hard” camp: if you were a browser vendor, what would you do? Any language will have fast paths (and as a vendor you’re also incentivized to make those paths very fast), and if you enforce running only a single language, people can always compile to the set of operations that are fast in that language. WASM is an improvement over the ad-hoc version, at least.

                                                                                    But yeah, definitely get that security on the web is hard :(

                                                                            2. 4

                                                                              I can see your fear but it might be unfounded. WASM doesn’t have access to all the Web Platforms API, that is not how it works. The WASM “ISA” is specified, it doesn’t have access to stuff outside it, you might be curious to check the specs at https://webassembly.github.io/spec/

                                                                              Since the WASM file formats (both the bytecode one and the text one, which is based on S-expressions) are easy to parse, it is not too far-fetched to have static analysers checking the code out.

                                                                              WASM doesn’t have access to file system or sockets or even the DOM among other limitations. It is basically a faster way to number crunch and/or port existing code written in other languages. All those side-effecty things need to be proxied over through JS and the Web Platform that will ask permissions and sandbox a ton of it.

                                                                              In my humble option, I am much more confortable executing JS/WASM things on the client-side than trusting arbitraty SaaS backends with my data. I know what the Web Platform has access to and what I allow it to peer with.

                                                                              I find WebUSB a really nice step forward as it allows WebAuth to provide stronger authentication schemes, which are always a good idea.

                                                                              1. 2

                                                                                Thanks for the link. I was wanting to learn more about it. The intro is really good, too. Many desirable properties. I bet it was hard to design trying to balance all of that. Usually, that also means a formal specification might uncover some interesting issues.

                                                                            1. 2

                                                                              If memory is no object, and you expect to use emojis, and you want fast random access in long strings, I think that UTF-32 is superior.

                                                                              No. – “fast random access” to what?

                                                                              1. 1

                                                                                UTF-32 also isn’t a silver bullet here as they suppose because of combining characters and zwj’s.

                                                                                1. 0

                                                                                  Exactly.

                                                                              1. 10

                                                                                Ive been in conversations online in various places about getting Firefox revenue off ad revenue. One of my ideas was enterprise features licensed at a nice price. Like wigh Open Core, makknv the enterprise features paid has almost no effect on individuals that make up their majority of users.

                                                                                “a little something extra for everyone who deploys Firefox in an enterprise environment. …”

                                                                                Then, they start adding that stuff in for free. So much for that idea.

                                                                                1. 9

                                                                                  They could start with a Windows Server GPO that was easy to install and configure. There’s no bigger Firefox advocate than me, yet I’m forced to use Chrome on my network because it was so easy to configure high-security policies for it, whereas I gave up trying to do the same for Firefox.

                                                                                  1. 4

                                                                                    Bookmarking that idea in case I ever get a chance to talk to their managemeng about this stuff. :)

                                                                                    1. 9

                                                                                      Thanks Nick! I’m no manager but I can take it from here (on Monday, because I’m off for the rest of the week):-))

                                                                                      @jrc: Are you willing to expand on that hardship? AFAIU our project managers have worked with some enterprises to hear about their needs. This is in part because the enterprise mailing list we have doesn’t contain enough vocal enterprises willing to talk about their pain points in the open.

                                                                                      Did you try the GPO features we just released with Firefox 60? What were you trying to do that didn’t work? Is there anything else you were missing?

                                                                                      For everyone else reading this, please answer those questions as well and I’m happy to forward the whole thread.

                                                                                      1. 2

                                                                                        I’m not jrc, and this isn’t specifically related but my biggest problem with Firefox largely boils down to the fact that it’s not portable. It’s one of the few things where I get a new computer, plug in my drive, and it isn’t already working. I just did it again today, and while I use sync, losing my open tabs (on the session I’m using), cookies, extension data, and everything else that goes along with my previous session isn’t great.

                                                                                        1. 4

                                                                                          Sorry to pile onto that, but on a slightly related note: It’s embarrassing that Firefox is still dumping folders into $HOME instead of following the applicable standard.

                                                                                          1. 1

                                                                                            Update! Please read through the policy templates repo and file issues there.

                                                                                            1. 1

                                                                                              No fix for this and I don’t think that’s the appropriate place for it. :-/

                                                                                        2. 1

                                                                                          Hi! Sorry I didn’t see your reply or I would have commented back sooner. To answer your question, it’s been a couple years since I tried it. However, I’m about to upgrade to Windows Server 2016, so I will give it another go with Firefox and document the experience.

                                                                                          I can say off the top of my head, on my particular network, I’m looking to:

                                                                                          Browse websites and do nothing else. Easily lock out the ability to print, change any configuration settings at all, including visibility of toolbars, Firefox sync, managing search engines, anything like that.

                                                                                          I’d also like to be able to easily (1) install and (2) configure settings for add-ons, to manage mass deployment of updates to those add-ons, etc.

                                                                                          1. 1

                                                                                            Thanks for the feedback. Great to hear you’ll give it a try. I suppose that not exactly 100% of your requirements will be satisfied, but I’d love to see a blog post about your endeavors (unless it’s shattering criticism ;))

                                                                                          2. 1

                                                                                            Update! Please read through the policy templates repo and file issues there.

                                                                                    1. 75

                                                                                      Capitalism is killing us in a very literal sense by destroying our habitat at an ever accelerating rate. The fundamental idea of needing growth and having to constantly invent new things to peddle leads to ever more disposable products, that are replaced for the sake of being replaced. There’s been very little actual innovation happening in the phone space. The vendors are intentionally building devices using the planned obsolescence model to force the upgrade cycle.

                                                                                      The cancer of consumerism affects pretty much every aspect of society, we’ve clear cut unique rain forests and destroyed millions of species we haven’t even documented so that we can make palm oil. A product that causes cancer, but that’s fractionally cheaper than other kinds of oil. We’ve created a garbage patch the size of a continent in the ocean. We’re poisoning the land with fracking. The list is endless, and it all comes down to the American ethos that making money is a sacred right that trumps all other concerns.

                                                                                      1. 22

                                                                                        Capitalism is killing us in a very literal sense by destroying our habitat at an ever accelerating rate.

                                                                                        The cancer of consumerism affects pretty much every aspect of society, we’ve clear cut unique rain forests and destroyed millions of species we haven’t even documented so that we can make palm oil.

                                                                                        One can get into a big debate about this, but the concept of externalities has existed for a long time and specifically addresses these concerns. Products do not cost what they should when taken their less tangible environment impact into account. It’s somewhat up to the reader to decide if the inability of society to take those into account is capitalism’s fault, or just human nature, or something else. I live in a country that leans much more socialist than the US but is unequivocally a capitalist country and they do a better job of managing these externalities. And China is not really capitalistic in the same way the US is but is a pretty significant polluter.

                                                                                        1. 5

                                                                                          Indeed, it’s not the fault of the economic system (if you think Capitalistic societies are wasteful, take a look at the waste and inefficiency of industry under the USSR). If externalities are correctly accounted for, or to be safe, even over-accounted for by means of taxation or otherwise, the market will work itself out. If the environmental cost means the new iPhone costs $2000 in real costs, Apple will work to reduce environmental cost in order to make an affordable phone again and everyone wins. And if they don’t, another company will figure it out instead and Apple will lose.

                                                                                          Currently, there is basically no accounting for these externalities, and in some cases (although afaik not related to smart phones), there are subsidies and price-ceiling regulations and subsidies that actually decreases the cost of some externalities artificially and are worse for the environment than no government intervention at all.

                                                                                          The easy example of this is California State water subsidies for farmers. Artificially cheap water for farmers means they grow water-guzzling crops that are not otherwise efficient to grow in arid parts of the state, and cause environmental damage and water shortage to normal consumers. Can you imagine your local government asking you to take shorter showers and not wash your car, when farmers are paying 94% less than you to grow crops that could much more efficiently be grown in other parts of the country? That’s what happens in California.

                                                                                          Step 1 and 2 are to get rid of the current subsidies and regulations that aggravate externalities and impose new regulation/taxes that help account for externalities.

                                                                                          1. 2

                                                                                            I have talked to a factory owner in china. He said China is more capitalist than the USA. He said China prioritizes capital over social concerns.

                                                                                            1. 1

                                                                                              Ok? I can talk to lots of people with lots of opinions. That doesn’t make it true.

                                                                                              1. 1

                                                                                                It’s just impressive that a capitalist would say. If China was even remotely communist, don’t you find it interesting that most capitalists who made deals with China seem ok helping ‘the enemy’ become the second largest economy in the world? I prefer to believe the simpler possibility that China is pretty darn capitalist itself.

                                                                                                1. 2

                                                                                                  I did not say China was not capitalist, I said it’s not in the same way as the US. There is a lot more state involvement in China.

                                                                                                  1. 2

                                                                                                    Is your claim then that state involvement means you have more pollution? Maybe I’m confused by what you were trying to get at, sorry :-/

                                                                                                    1. 2

                                                                                                      No, I was pointing out that different countries are doing capitalism differently and some of them are better at dealing with externalities and some of them are worse. With the overall point being that capitalism might be the wrong scapegoat.

                                                                                            1. 7

                                                                                              I think the consumer could be blamed more than capitalism, the companies make what sells, the consumers are individuals who buy products that hurt the environment, I think that it is changing though as people become more aware of these issues, they buy more environmentally friendly products.

                                                                                              1. 30

                                                                                                You’re blaming the consumer? I’d really recommend watching Century of the Self. Advertising has a massive impact and the mass of humans are being fed this desire for all the things we consume.

                                                                                                I mean, this really delves into the deeper question of self-awareness, agency and free will, but I really don’t think most human beings are even remotely aware.

                                                                                                Engineers, people on Lobster, et. al do really want standard devices. Fuck ARM. Give me a god damn mobile platform. Microsoft for the love of god, just publish your unlock key for your dead phone line so we can have at least one line of devices with UEFI+ARM. Device tree can go die in a fire.

                                                                                                The Linux-style revolution of the 2000s (among developers) isn’t happening on mobile because every device is just too damn different. The average consumer could care less. Most people like to buy new things, and we’re been indoctrinated to that point. Retailers and manufactures have focus groups geared right at delivering the dopamine rush.

                                                                                                I personally hate buying things. When my mobile stopped charging yesterday and the back broke again, I thought about changing it out. I’ve replaced the back twice already and the camera has spots on the sensor under the lenses.

                                                                                                I was able to get it charging when I got home on a high amp USB port, so instead I just ordered yet another back and a new camera (I thought it’d be a bitch to get out, but a few YouTube videos show I was looking at the ribbon wrong and it’s actually pretty easy to replace).

                                                                                                I feel bad when I buy things, but it took a lot of work to get to that point. I’ve sold or given away most of my things multiple times to go backpacking, I run ad block .. I mean if everyone did what I’d did, my life wouldn’t be sustainable. :-P

                                                                                                We are in a really solidly locked paradigm and I don’t think it can simply shift. If you believe the authors of The Dictators Handbook, we literally have to run our of resources before the general public and really push for dramatically different changes.

                                                                                                We really need more commitment to open standards mobile devices. The Ubuntu Edge could have been a game changer, or even the Fairphone. The Edge never got funded and the Fairphone can’t even keep parts sourced for their older models.

                                                                                                We need a combination of people’s attitudes + engineers working on OSS alternatives, and I don’t see either happening any time soon.

                                                                                                Edit: I forgot to mention, Postmarket OS is making huge strides into making older cellphones useful and I hope we see more of that too.

                                                                                                1. 7

                                                                                                  I second the recommendation for The Century of the Self. That movie offers a life-changing change of perspective. The other documentaries by Curtis are also great and well worth the time.

                                                                                                  1. 3

                                                                                                    Century of the Self was a real eye opener. Curtis’s latest documentary, HyperNormalisation, also offers very interesting perspectives.

                                                                                                  2. 26

                                                                                                    Capitalism, by it’s very nature, drives companies to not be satisfied with what already sells. Companies are constantly looking to create new markets and products, and that includes creating demand.

                                                                                                    IOW, consumers aren’t fixed actors who buy what they need; they are acted upon to create an ever increasing number of needs.

                                                                                                    There are too many examples of this dynamic to bother listing.

                                                                                                    1. 12

                                                                                                      It’s also very difficult for the consumer to tell exactly how destructive a particular product is. The only price we pay is the sticker price. Unless you really want to put a lot of time into research it is hard to tell which product is better for the environment.

                                                                                                      1. 14

                                                                                                        It’s ridiculous to expect everyone to be an expert on every supply chain in the world, starting right from the mines and energy production all the way to the store shelf. That’s effectively what you are requiring.

                                                                                                        I’m saying this as a very conscious consumer. I care about my carbon footprint, I don’t buy palm oil, I limit plastic consumption, I limit my consumption overall, but it’s all a drop in the ocean and changes nothing. There are still hundreds of compounds in the everyday items I buy whose provenance I know nothing about and which could be even more destructive. Not to mention that manufacturers really don’t want you to know, it’s simply not in their interest.

                                                                                                        You’re creating an impossible task and setting people up to fail. It is not the answer.

                                                                                                        1. 2

                                                                                                          “It’s ridiculous to expect everyone to be an expert on every supply chain in the world, starting right from the mines and energy production all the way to the store shelf. That’s effectively what you are requiring.”

                                                                                                          I don’t think it is what they’re requiring and it’s much easier than you describe. Here’s a few options:

                                                                                                          1. People who are really concerned about this at a level demanding much sacrifice to avoid damaging the environment should automatically avoid buying anything they can’t provably trust by default. The Amish are a decent example that avoids a lot of modern stuff due to commitment to beliefs.

                                                                                                          2. There’s groups that try to keep track of corporate abuse, environmental actions, and so on of various companies. They maintain good and bad lists. More people that supposedly care can both use them and join them in maintaining that data. It would be split among many people to lessen each’s burden. Again, avoid things by default until they get on the good lists. Ditch them if they get on the bad ones.

                                                                                                          3. Collectively push their politicians for laws giving proper labels, auditing, etc that help with No 2. Also, push for externalities to be charged back to the companies somehow to incentivize less-damaging behavior.

                                                                                                          4. Start their own businesses that practice what they preach. Build the principles into their charters, contracts, and so on. Niche businesses doing a better job create more options on the good lists in No 2. There’s entrepreneurs doing this.

                                                                                                          So, not all-knowing consumers as you indicated. Quite a few strategies that are less impossible.

                                                                                                          1. 4

                                                                                                            @ac specifically suggested consumer choice as the solution to environmental issues, and that’s what I disagreed with.

                                                                                                            Your point number 3 is quite different from the other three, and it’s what I would suggest as a far more effective strategy than consumer choice (along with putting pressure on various corporations). As an aside, I still wouldn’t call it easy - it’s always a hard slog.

                                                                                                            Your points 1, 2 and 4 still rely on consumer choice, and effectively boil down to: either remove yourself from modern civilisation, or understand every supply chain in the world. I think it’s obvious that the first choice is neither desirable nor “much easier” for the vast majority of people (and I don’t think it’s the best possible solution). The second is impossible, as I said before.

                                                                                                            1. 1

                                                                                                              “consumer choice as the solution to environmental issues”

                                                                                                              edit to add: consumer choice eliminated entire industries worth of companies because they wanted something else. It’s only worsened environmental issues. That’s probably not an argument against consumer choice so much as in favor of them willing to sacrifice the environment overall to get the immediate things they want.

                                                                                                              “either remove yourself from modern civilisation, or understand every supply chain in the world”

                                                                                                              This is another false dichotomy. I know lots of people who are highly-connected with other people but don’t own lots of tech or follow lots of fads. In many cases, they seem to know about them enough to have good conversations with people. They follow what’s going on or are just good listeners. Buying tons of gadgets or harmful things isn’t necessary for participation. You can get buy with a lot less than average middle or upper class person.

                                                                                                              What you said is better understood as a spectrum to be in like most things. Lots of positions in it.

                                                                                                              1. 2

                                                                                                                I think we might actually be mostly in agreement, but we’re talking past each other a bit.

                                                                                                                That’s probably not an argument against consumer choice so much as in favor of them willing to sacrifice the environment overall to get the immediate things they want.

                                                                                                                I agree with this. But even when consumer choice is applied with environmental goals in mind, I believe its effect is very limited, simply because most people won’t participate.

                                                                                                                This is another false dichotomy.

                                                                                                                Yeah, but it was derived from your points :) I was just trying to hammer the point that consumer choice isn’t an effective solution.

                                                                                                                You can get buy with a lot less than average middle or upper class person.

                                                                                                                Totally. I’ve been doing that for a long time: avoiding gadgets and keeping the stuff I need (eg a laptop) as long as I can.

                                                                                                                1. 1

                                                                                                                  “But even when consumer choice is applied with environmental goals in mind, I believe its effect is very limited, simply because most people won’t participate.”

                                                                                                                  Oh OK. Yeah, I share that depressing view. Evidence is overwhelmingly in our favor on it. It’s even made me wonder if I should even be doing the things I’m doing if so few are doing their part.

                                                                                                        2. 5

                                                                                                          The blame rests on the producers, not on the consumers.

                                                                                                          Consumers are only able to select off of the menu of available products, so to speak. Most of the choices everyday consumers face are dictated by their employers and whatever is currently available to make it through their day.

                                                                                                          No person can reasonably trace the entire supply chain for every item they purchase, and could likely be impossible even with generous time windows. Nor would I want every single consumer to spend their non-working time to tracing these chains.

                                                                                                          Additionally, shifting this blame to the consumer creates conditions where producers can charge a premium on ‘green’ and ‘sustainable’ products. Only consumers with the means to consume ‘ethically’ are able to do so, and thus shame people with less money for being the problem.

                                                                                                          The blame falls squarely on the entities producing these products and the states tasked with regulating production. There will be no market-based solution to get us out of the climate catastrophe, and we certainly can’t vote for a green future with our dollars.

                                                                                                          1. 4

                                                                                                            Consumers are only able to select off of the menu of available products, so to speak. Most of the choices everyday consumers face are dictated by their employers and whatever is currently available to make it through their day.

                                                                                                            That’s not true even though it seems it is. The consumers’ past behavior and present statements play a major role in what suppliers will produce. Most of what you see today didn’t happen overnight. There were battles fought where quite a few companies were out there doing more ethical things on supply side. They ended up bankrupt or with less marketshare while the unethical companies got way ahead through better marketing of their products. With enough wealth accumulated, they continued buying the brands of the better companies remaking them into scumbag companies, too, in many cases.

                                                                                                            For instance, I strongly advise against companies developing privacy- or security-oriented versions of software products that actually mitigate risks. They’ll go bankrupt like such companies often always did. The companies that actually make lots of money apply the buzzwords customers are looking for, integrate into their existing tooling (often insecure), have features they demand that are too complex to secure, and in some cases are so cheap the QA couldn’t have possibly been done right. That has to be private or secure for real against smart black hats. Not going to happen most of the time.

                                                                                                            So, I instead tell people to bake cost-effective security enhancements and good service into an otherwise good product advertised for mostly non-security benefits. Why? Because that’s what demand-side responds to almost every time. So, the supply must provide it if hoping to make waves. Turns out, there’s also an upper limit to what one can achieve in that way, too. The crowds’ demands will keep creating obstacles to reliability, security, workers’ quality of life, supplier choice, environment… you name it. They mostly don’t care either where suppliers being honest about costs will be abandoned for those delivering to demand side. In face of that, most suppliers will focus on what they think is in demand across as many proven dimensions as possible.

                                                                                                            Demand and supply side are both guilty here in a way that’s closely intertwined. It’s mostly demand side, though, as quite a few suppliers in each segment will give them whatever they’re willing to pay for at a profit.

                                                                                                            1. 3

                                                                                                              I agree with a lot of your above point, but want to unpack some of this.

                                                                                                              Software security is a strange case to turn to since it has less direct implications on the climate crisis (sure anything that relies on a datacenter is probably using too much energy) compared to the production of disposable, resource-intensive goods.

                                                                                                              Demand and supply side are both guilty here in a way that’s closely intertwined. It’s mostly demand side, though, as quite a few suppliers in each segment will give them whatever they’re willing to pay for at a profit.

                                                                                                              I parse this paragraph to read: we should blame consumers for buying what’s available and affordable, because suppliers are incapable of acting ethically (due to competition).

                                                                                                              So should we blame the end consumer for buying a phone every two years and not the phone manufacturers/retailers for creating rackets of planned obsolescence?

                                                                                                              And additionally, most suppliers are consumers of something else upstream. Virtually everything that reaches an end consumer has been consumed and processed several times over by suppliers above. The suppliers are guilty on both counts by our separate reasoning.

                                                                                                              Blaming individuals for structural problems simply lets suppliers shirk any responsibility they should have to society. After all, suppliers have no responsibility other than to create profits. Suppliers’ bad behavior must be curtailed either through regulation, public education campaigns to affect consumption habits, or organizing within workplaces.

                                                                                                              (As an aside, I appreciate your response and it’s both useful and stimulating to hear your points)

                                                                                                              1. 2

                                                                                                                “I parse this paragraph to read: we should blame consumers for buying what’s available and affordable, because suppliers are incapable of acting ethically (due to competition).”

                                                                                                                You added two words, available and affordable, to what I said. I left affordable off because many products that are more ethical are still affordable. Most don’t buy them anyway. I left availability off since there’s products appearing all the time in this space that mostly get ignored. The demand side not buying enough of what was and currently is available in a segment sends a message to suppliers about what they should produce. Especially if it’s consistent. Under vote with your wallet, we should give consumers their share of credit or blame for anything their purchasing decisions as a whole are supporting or destroying. That most won’t deliberately try to obtain an ethical supplier of… anything… supports my notion demand side has a lot to do with unethical activities of financially-successful suppliers.

                                                                                                                For a quick example, there are often coops and farmers markets in lots of rural areas or suburban towns in them. There’s usually a segment of people who buy from them to support their style of operation and/or jobs. There’s usually enough to keep them in business. You might count Costco in that, too, where a membership fee that’s fixed cost gets the customers a pile of stuff at a promised low-markup and great service. There’s people that use credit unions, esp in their industry, instead of banks. There’s people that try to buy from nonprofits, public beneit companies, companies with good track record, and so on. There’s both a demand side (tiny) and suppliers responding to it that show this could become a widespread thing.

                                                                                                                Most consumers on demand side don’t do that stuff, though. They buy a mix of necessities and arbitrary stuff from whatever supplier is lowest cost, cheapest, most variety, promoting certain image, or other arbitrary reasons. They do this so much that most suppliers, esp market leaders, optimize their marketing for that stuff. They also make more money off these people that let them put lots of ethical, niche players out of business over time. So, yeah, I’d say consumer demand being apathetic to ethics or long-term thinking is a huge part of the problem given it puts tens of billions into hands of unethical parties. Then, some of that money goes into politicians’ campaign funds so they make things even more difficult for those companies’ opponents.

                                                                                                                “Blaming individuals for structural problems simply lets suppliers shirk any responsibility they should have to society.”

                                                                                                                Or the individuals can buy from different suppliers highlighting why they’re doing it. Other individuals can start companies responding to that massive stated demand. The existing vendors will pivot their operations. Things start shifting. It won’t happen without people willing to buy it. Alternatively, using regulation as you mentioned. I don’t know how well public education can help vs all the money put into advertising. The latter seems more powerful.

                                                                                                                “(As an aside, I appreciate your response and it’s both useful and stimulating to hear your points)”

                                                                                                                Thanks. Appreciate you challenging it so I think harder on and improve it. :)

                                                                                                            2. 2

                                                                                                              Only consumers with the means to consume ‘ethically’ are able to do so, and thus shame people with less money for being the problem.

                                                                                                              This is ignoring reality, removing cheaper options does not make the other options cheaper to manufacture. It is not shaming people.

                                                                                                              You are also ignoring the fact that in a free country the consumers and producers are the same people. A dissatisfied consumer can become a producer of a new alternative if they see it as possible.

                                                                                                            3. 3

                                                                                                              Exactly. The consumers could be doing more on issues like this. They’re complicit or actively contribute to the problems.

                                                                                                              For example, I use old devices for as long as I can on purpose to reduce waste. I try to also buy things that last as long as possible. That’s a bit harder in some markets than others. For appliances, I just buy things that are 20 years old. They do the job and usually last 10 more years since planned obsolescence had fewer tricks at the time. ;) My smartphone is finally getting unreliable on essential functions, though. Bout to replace it. I’ll donate, reuse, or recycle it when I get new one.

                                                                                                              On PC side, I’m using a backup whose age I can’t recall with a Celeron after my Ubuntu Dell w/ Core Duo 2 died. It was eight years old. Attempting to revive it soon in case it’s just HD or something simple. It’s acting weird, though, so might just become a box for VM experiments, fuzzing, opening highly-untrustworthy URLs or files, etc. :)

                                                                                                            4. 7

                                                                                                              Capitalism is killing us in a very literal sense by destroying our habitat at an ever accelerating rate

                                                                                                              Which alternatives would make people happier to consume less – drive older cars, wear rattier clothing, and demand fewer exotic vacations? Because, really, that’s the solution to excessive use of the environment: Be happier with less.

                                                                                                              Unfortunately, greed has been a constant of human nature far too long for capitalism to take the blame there.

                                                                                                              1. 9

                                                                                                                Which alternatives would make people happier to consume less – drive older cars, wear rattier clothing, and demand fewer exotic vacations?

                                                                                                                Why do people want new cars, the latest fashions, and exotic vacations in the first place? If it’s all about status and bragging rights, then it’s going to take a massive cultural shift that goes against at least two generation’s worth of cultural programming by advertisers on the behalf of the auto, fashion and travel industries.

                                                                                                                I don’t think consumerism kicked into high gear until after the end of World War II when modern advertising and television became ubiquitous, so perhaps the answer is to paraphrase Shakespeare:

                                                                                                                The first thing we do, let’s kill all the advertisers.

                                                                                                                OK, maybe killing them (or encouraging them to off themselves in the tradition of Bill Hicks) is overkill. Regardless, we should consider the possibility that advertising is nothing but private sector psyops on behalf of corporations, and should not be protected as “free speech”.

                                                                                                                1. 2

                                                                                                                  If there was an advertising exception for free speech, people would use it as an unprincipled excuse to ban whatever speech they didn’t like, by convincing the authorities to classify it as a type of advertising. After all, most unpopular speech is trying to convince someone of something, right? That’s what advertising fundamentally is, right?

                                                                                                                  Remember that the thing that Oliver Wendell Holmes called “falsely shouting fire in a crowded theater” wasn’t actually shouting “fire” in an actual crowded theater - it was a metaphor he used to describe protesting the military draft.

                                                                                                                  1. 9

                                                                                                                    I agree: there shouldn’t be an advertising exception on free speech. However, the First Amendment should only apply to homo sapiens or to organisms we might eventually recognize as sufficiently human to possess human rights. Corporations are not people, and should not have rights.

                                                                                                                    They might have certain powers defined by law, but “freedom of speech” shouldn’t be one of them.

                                                                                                                2. 3

                                                                                                                  IMO, Hedonistic adaptation is a problem and getting worse. I try to actively fight against it.

                                                                                                                  1. 2

                                                                                                                    It would be a start if we designed cities with walking and public transportation in mind, not cars.

                                                                                                                    My neighborhood is old and walkable. I do shopping on foot (I have a bicycle but don’t bother with it). For school/work, take a single bus and a few minutes walking. Getting a car would be a hassle, I don’t have a place to park it, and I’d have to pay large annual fees for rare use.

                                                                                                                    Newer neighborhoods appear to be planned with the idea that you’ll need a car for every single task. “Residential part” with no shops at all, but lots of room for parking. A large grocery store with a parking lot. Even train stations with a large parking lot, but no safe path for pedestrians/cyclists from the nearby neighborhoods.

                                                                                                                  2. 4

                                                                                                                    The new features on phones are so fucking stupid as well. People are buying new phones to get animated emojis and more round corners. It’s made much worse with phone OEMs actively making old phones work worse by slowing them down.

                                                                                                                    1. 7

                                                                                                                      There has been no evidence to my knowledge that anyone is slowing old phones down. This continues to be an unfounded rumor

                                                                                                                      1. 2

                                                                                                                        There’s also several Lobsters that have said Android smartphones get slower over time at a much greater rate than iPhones. I know my Galaxy S4 did. This might be hardware, software bloat, or whatever. There’s phones it’s happening on and those it isn’t in a market where users definitely don’t want their phones slowing down. So, my theory on Android side is it’s a problem they’re ignoring on purpose or even contributing to due to incentives. They could be investing money into making the platform much more efficient across devices, removing bloat, etc. They ain’t gonna do that.

                                                                                                                        1. 3

                                                                                                                          Android smartphones get slower over time at a much greater rate than iPhones.

                                                                                                                          In my experience, this tends to be 3rd party apps that start at boot and run all the time. Factory reset fixes it. Android system updates also make phones faster most of the time.

                                                                                                                          1. 1

                                                                                                                            Hmm. I’ll try it since I just backed everything up.

                                                                                                                            1. 3

                                                                                                                              I’m still using a Nexus 6 I got ~2.5 years ago. I keep my phone pretty light. No Facebook or games. Yet, my phone was getting very laggy. I wiped the cache (Settings -> Storage -> Cached data) and that seemed to help a bit, but overall, my phone was still laggy. It seemed to get really bad in my text messaging app (I use whatever the stock version is). I realized that I had amassed a lot of text messages over the years, which includes quite a lot of gifs. I decided to wipe my messages. I did that by installing “SMS Backup & Restore” and telling it to delete all of my text messages, since apparently the stock app doesn’t have a way to do this in bulk. It took at least an hour for the deletion to complete. Once it was done, my phone feels almost as good as new, which makes me really happy, because I really was not looking forward to shelling out $1K for a Pixel.

                                                                                                                              My working theory is that there is some sub-optimal strategy in how text messages are cached. Since I switch in and out of the text messaging app very frequently, it wouldn’t surprise me if I was somehow frequently evicting things from memory and causing disk reads, which would explain why the lag impacted my entire phone and not just text messages. But, this is just speculation. And a factory reset would have accomplished the same thing (I think?), so it’s consistent with the “factory reset fixes things” theory too.

                                                                                                                              My wife is still on a Nexus 5 (great phone) and she has a similar usage pattern as me. Our plan is to delete her text messages too and see if that helps things.

                                                                                                                              Anyway… I realize this basically boils down to folk remedies at this point, but I’m just going through this process now, so it’s top of mind and figured I’d share.

                                                                                                                              1. 2

                                                                                                                                I’ll be damned. I baked up and wiped the SMS, nothing else. The phone seems like it’s moving a lot snappier. Literally a second or two of delay off some things. Some things are still slow but maybe app just is. YouTube always has long loading time. The individual videos load faster now, though.

                                                                                                                                Folk remedy is working. Appreciate the tip! :)

                                                                                                                                1. 2

                                                                                                                                  w00t! Also, it’s worth mentioning that I was experiencing much worse delay than a second or two. Google Nav would sometimes lock up for many seconds.

                                                                                                                                  1. 1

                                                                                                                                    Maps seems OK. I probably should’ve been straight-up timing this stuff for better quality of evidence. Regardless, it’s moving a lot faster. Yours did, too. Two, strong anecdotes so far on top of factory reset. Far as we know, even their speed gains might have come from SMS clearing mostly that the reset did. Or other stuff.

                                                                                                                                    So, I think I’m going to use it as is for a week or two to assess this change plus get a feel for a new baseline. Then, I’ll factory reset it, reinstall some apps from scratch, and see if that makes a difference.

                                                                                                                                    1. 2

                                                                                                                                      Awesome. Please report back. :-)

                                                                                                                                      1. 2

                                                                                                                                        I’ll try to remember to. I’m just still stunned it wasn’t 20 Chrome tabs or all the PDF’s I download during the day. Instead, text messages I wasn’t even using. Of all things that could drag a whole platform down…

                                                                                                                                        1. 2

                                                                                                                                          Sms is stored on the SIM card, right? That’s probably not got ideal I/O characteristics…

                                                                                                                                          1. 1

                                                                                                                                            I thought the contacts were but messages were on phone. I’m not sure. The contacts being on there could have an effect. I’d have hoped they cached a copy of SIM contents onto in-phone memory. Yeah, SIM access could be involved.

                                                                                                                                2. 2

                                                                                                                                  Now, that’s fascinating. I don’t go in and out of text a lot but do have a lot of text messages. Many have GIF’s. There’s also at least two other apps that accumulate a lot of stuff. I might try wiping them. Btw, folk remedies feel kind of justified when we’re facing a complex, black-box system with nothing else to go on. ;)

                                                                                                                          2. 2

                                                                                                                            Official from apple: https://www.apple.com/au/iphone-battery-and-performance/

                                                                                                                            They slow phones with older batteries but don’t show the user any indication that it can be fixed very cheaply by replacing the battery (Until after the recent outrage) and many of them will just buy a new phone and see it’s much faster.

                                                                                                                            1. 12

                                                                                                                              Wow, so much to unpack here.

                                                                                                                              You said they slow old phones down. That is patently false. New versions of iOS are not made to run slowly on older model hardware.

                                                                                                                              Apple did not slow phones down with old batteries. They throttled the CPU of phones with failing batteries (even brand new ones!) to prevent the phone from crashing due to voltage drops. This ensured the phone was still functional even if you needed your phone in an emergency. Yes it was stupid there was no notification to the user. This is no longer relevant because they now provide notifications to the user. This behavior existed for a short period of time in the lifespan of the iPhone: less than 90 days between introduction of release with throttling and release with controls to disable and notifications to users.

                                                                                                                              Please take your fake outrage somewhere else.

                                                                                                                              1. 5

                                                                                                                                Apple did not slow phones down with old batteries. They throttled the CPU of phones with failing batteries (even brand new ones!) to prevent the phone from crashing due to voltage drops.

                                                                                                                                In theory this affects new phones as well, but we know that as batteries grow older, they break down, hold less charge, and have a harder time achieving their design voltage. So in practice, this safety mechanism for the most part slows down older phones.

                                                                                                                                You claim @user545 is unfairly representing the facts by making Apple look like this is some evil ploy to increase turnover for their mobile phones.

                                                                                                                                However, given the fact that in reality this does mostly make older phones seem slower, and the fact that they put this in without ever telling anyone outside Apple and not allowing the user to check their battery health and how it affected the performance of their device, I feel like it requires a lot more effort not to make it look like an intentional decision on their part.

                                                                                                                                1. 2

                                                                                                                                  Sure, but if you have an old phone with OK batteries, then their code did not slow it down. So I think it is still more correct to say they slowed down those with bad batteries than those that were old even if most of those with bad batteries were also bad which really depended on phone’s use.

                                                                                                                                  The difference is not just academic. For example I have “inherited” iPhone6 from my wife that still has a good battery after more than 2 years and performs fine.

                                                                                                                                  1. 2

                                                                                                                                    the fact that they put this in without ever telling anyone outside Apple

                                                                                                                                    It was in the release notes of that iOS release…

                                                                                                                                    edit: additionally it was known during the beta period in December. This wasn’t a surprise.

                                                                                                                                    1. 1

                                                                                                                                      Again, untrue. The 11.2 release notes make no mention of batteries, throttling, or power management. (This was the release where Apple extended the throttling to the 7 series of phones.) The 10.2.1 release notes, in their entirety, read thus:

                                                                                                                                      iOS 10.2.1 includes bug fixes and improves the security of your iPhone or iPad. It also improves power management during peak workloads to avoid unexpected shutdowns on iPhone.

                                                                                                                                      That does not tell a reader that long-term CPU throttling is taking place, that it’s restricted to older-model iPhones only, that it’s based on battery health and fixable with a new battery (not a new phone), etc. It provides no useful or actionable information whatsoever. It’s opaque and frankly deceptive.

                                                                                                                                      1. 0

                                                                                                                                        You’re right, because I was mistaken and the change was added in iOS 10.2.1, 1/23/2017

                                                                                                                                        https://support.apple.com/kb/DL1893?locale=en_US

                                                                                                                                        It also improves power management during peak workloads to avoid unexpected shutdowns on iPhone.

                                                                                                                                        A user on the day of release:

                                                                                                                                        Hopefully it fixes the random battery shutoff bug.

                                                                                                                                        src: https://forums.macrumors.com/threads/apple-releases-ios-10-2-1-with-bug-fixes-and-security-improvements.2028992/page-2#post-24225066

                                                                                                                                        additionally in a press release:

                                                                                                                                        In February 2017, we updated our iOS 10.2.1 Read Me notes to let customers know the update ‘improves power management during peak workloads to avoid unexpected shutdowns.’ We also provided a statement to several press outlets and said that we were seeing positive results from the software update.

                                                                                                                                        Please stop trolling. It was absent from the release notes for a short period of time. It was fixing a known issue affecting users. Go away.

                                                                                                                                        1. 4

                                                                                                                                          Did you even read the comment you are responding to? I quoted the 10.2.1 release notes in full–the updated version–and linked them too. Your response is abusive and in bad faith, your accusations of trolling specious.

                                                                                                                                          1. [Comment removed by moderator pushcx: We've never had cause to write a rule about doxxing, but pulling someone's personal info into a discussion like this to discredit them is inappropriate.]

                                                                                                                                            1. 2

                                                                                                                                              I don’t hate Apple. I’m not going to sell my phone because I like it. The battery is even still in good shape! I wish they’d been a little more honest about their CPU throttling. I don’t know why this provokes such rage from you. Did you go through all my old comments to try to figure out what kind of phone I have? Little creepy.

                                                                                                                                              1. 2

                                                                                                                                                I’m not angry about anything here. It’s just silly that such false claims continue to be thrown around about old phones intentionally being throttled to sell new phones. Apple hasn’t done that. Maybe someone else has.

                                                                                                                                                edit: it took about 30 seconds to follow your profile link to your website -> to Flickr -> to snag image metadata and see what phone you own.

                                                                                                                                  2. -3

                                                                                                                                    They throttled the CPU of phones with failing batteries (even brand new ones!)

                                                                                                                                    This is untrue. They specifically singled out only older-model phones for this treatment. From the Apple link:

                                                                                                                                    About a year ago in iOS 10.2.1, we delivered a software update that improves power management during peak workloads to avoid unexpected shutdowns on iPhone 6, iPhone 6 Plus, iPhone 6s, iPhone 6s Plus and iPhone SE. [snip] We recently extended the same support to iPhone 7 and iPhone 7 Plus in iOS 11.2.

                                                                                                                                    In other words, if you buy an iPhone 8 or X, no matter what condition the battery is in, Apple will not throttle the CPU. (In harsh environments–for example, with lots of exposure to cold temperatures–it’s very plausible that an 8 or X purchased new might by now have a degraded battery.)

                                                                                                                                    1. 2

                                                                                                                                      You are making a claim without any data to back it up.

                                                                                                                                      Can you prove that the batteries in the new iPhones suffer voltage drops when they are degraded? If they use a different design with more/smaller cells then AIUI they would be significantly less likely to have voltage drops when overall capacity is degraded.

                                                                                                                                      But no, instead you continue to troll because you have a grudge against Apple. Take your crap elsewhere. It’s not welcome here.

                                                                                                                                      1. 3

                                                                                                                                        You’re moving the goalposts. You claimed Apple is throttling the CPU of brand new phones. You were shown this to be incorrect, and have not brought any new info to the table. Your claim that the newer phones might be designed so as to not require throttling is irrelevant.

                                                                                                                                        Please don’t accuse (multiple) people of trolling. It reflects poorly on yourself. All are welcome here.

                                                                                                                                        1. 3

                                                                                                                                          You can buy a brand new phone directly from Apple (iPhone 6S) with a faulty battery and experience the throttling. I had this happen.

                                                                                                                                2. 1

                                                                                                                                  Google services update in the background even when other updates are disabled. Even if services updates are not intended to slow down the phone, they still do.

                                                                                                                                3. 3

                                                                                                                                  The new features on phones are so fucking stupid as well.

                                                                                                                                  I think the consumer who pays for it is stupid.

                                                                                                                                  1. 3

                                                                                                                                    It’s both. The user wants something new every year and OEMs don’t have anything worthwhile each year so they change things for the sake of change like adding rounded corners on the LCD or cutting a chunk out of the top. It makes it seem like something is new and worth buying when not much worthwhile has actually changed.

                                                                                                                                    1. 4

                                                                                                                                      I think companies would always take the path of least resistance that works. If consumers didn’t fall for such stupid tricks the companies that did them would die off.

                                                                                                                                4. 2

                                                                                                                                  Yep. I guess humanity’s biggest achievement will be to terraform itself out of existence.

                                                                                                                                  This planet does neither bargain nor care about this civilizations’ decision making processes. It will keep flying around the sun for a while, with or without humans on it.

                                                                                                                                  I’m amazed by the optimism people display in response to pointing out that the current trajectory of climate change makes it highly unlikely that our grand-grand-children will ever be born.

                                                                                                                                  1. 2

                                                                                                                                    The list is endless, and it all comes down to the American ethos that making money is a sacred right that trumps all other concerns.

                                                                                                                                    s/American/human

                                                                                                                                    You can’t fix a problem if you misunderstand what causes it.

                                                                                                                                    1. 5

                                                                                                                                      Ideology matters, and America has been aggressively promoting toxic capitalist ideology for many decades around the world. Humans aren’t perfect, but we can recognize our problems and create systems around us to help mitigate them. Capitalism is equivalent of giving a flamethrower to a pyromaniac.

                                                                                                                                      1. 3

                                                                                                                                        If you want to hash out how “toxic capitalism” is ruining everything, that’s fine–I’m just observing that many other countries (China, Germany, India, Mozambique, Russia, etc.) have done things that, to me at least, dispel the notion of toxic capitalism as purely being American in origin.

                                                                                                                                        And to avoid accusations of whataboutism, the reason I point those other countries out is that if a solution is put forth assuming that America is the problem–and hence itself probably grounded in approaches unique to an American context–it probably will not be workable in other places.

                                                                                                                                        1. 2

                                                                                                                                          Nobody is saying that capitalism alone is the problem or that it’s unique to America. I was saying that capitalism is clearly responsible for a lot of harm, and that America promotes it aggressively.

                                                                                                                                          1. 0

                                                                                                                                            Don’t backpedal. You wrote:

                                                                                                                                            The list is endless, and it all comes down to the American ethos that making money is a sacred right that trumps all other concerns.

                                                                                                                                            As to whether or not capitalism is clearly responsible for a lot of harm, it’s worth considering what the alternatives have accomplished.

                                                                                                                                            1. 0

                                                                                                                                              Nobody is backpedaling here, and pointing at other failed systems saying they did terrible things too isn’t much of an argument.

                                                                                                                                  1. 6

                                                                                                                                    From my perspective it feels like all the people making money with products based on OSM are fine with the core project stagnating, because it encourages more customers to consider their own offerings.

                                                                                                                                    OSM is certainly not the only problem suffering from this, it’s the same with Scala.

                                                                                                                                    1. 1

                                                                                                                                      Interesting, I have been playing with an even more restrictive approach in Rust for managing config files.

                                                                                                                                      1. 12

                                                                                                                                        I thought it would actually be about std::optional, not workspace issues that have nothing to do with the problem at hand.

                                                                                                                                        TL;DR: keep your toolchain up to date if you want to use recent language features.

                                                                                                                                        1. 3

                                                                                                                                          yeah. I suspect better article naming would be better at not leaving people feel like they kept on expecting the article to go somewhere it didn’t.

                                                                                                                                          1. 9

                                                                                                                                            I think it’s funny because the reader’s experience parallels the author’s experience of wanting to get someplace.

                                                                                                                                            1. 4

                                                                                                                                              Somebody gets me! :)

                                                                                                                                            2. 2

                                                                                                                                              Sorry folks :(. But std::optional works as one expects - you can write functions to accept std::optional and you just check early on if it evaluates to true and just return empty as needed, so you can chain functions neatly.

                                                                                                                                              Now, if only we could have pattern matching …

                                                                                                                                              1. 3

                                                                                                                                                I think the consensus of languages with options and pattern matching is “don’t use pattern matching, use combinators”.

                                                                                                                                                1. 4

                                                                                                                                                  Hmm as a full-time Haskeller “don’t use pattern matching” is news to me. Do you mean “don’t use pattern matching for fundamental vocabulary types like Maybe or Either? In which case it’s a reasonable guideline. For types representing your business domain, pattern matching is perfectly good practice. IMHO exhaustiveness checking of pattern matching is an indispensable feature for modelling your domain with types.

                                                                                                                                                  1. 1

                                                                                                                                                    Do you mean “don’t use pattern matching for fundamental vocabulary types like Maybe or Either?

                                                                                                                                                    Yes.

                                                                                                                                                  2. 3

                                                                                                                                                    Consensus, really? I’m a big fan of combinators, but I’ll still match on option types sometimes if I think it looks clearer.

                                                                                                                                                    1. 2

                                                                                                                                                      Ooh, this is interesting to me - can you expand on this (or point me to some writeups)? Thanks!

                                                                                                                                                  3. 2

                                                                                                                                                    Agreed. I read all the way down and nothing significant about std::optional.

                                                                                                                                                    I thought it was going to be some sort of piece about how using std::optional could lead to yak shaving or something :(

                                                                                                                                                1. 3

                                                                                                                                                  It’s a neat concept. It’s so weird to me since I’ve looked at the left, conditional, and right side of those all-together for years now. Just having the left alone on the top would take a bit of getting used to. :) Seriously, though, reading it made me think you should forward it to the Quorum people to see if they’ll do an experiment on it. You win if people find the new approach either better or the same. You win if it’s the same because it’s more symmetric and consistent than predecessors.

                                                                                                                                                  1. 1

                                                                                                                                                    Do they have some kind of log that shows their decision-making?

                                                                                                                                                    1. 1

                                                                                                                                                      I have no idea. I just glanced at it a few times in the past. I remember reading PDF’s detailing their experiments on things like syntax. The concept was that any claim was tested empirically. If experiments showed it was better, then the feature or change went into the language. The place to start on it is here.

                                                                                                                                                      1. 1

                                                                                                                                                        Not sure what their definition of quality is but just looking at https://quorumlanguage.com/tutorials/language/types.html seems it is even remotely in line with my expectations.

                                                                                                                                                        1. 1

                                                                                                                                                          Did you notice the scalar types were close to how people describe things in problem descriptions? Looked pretty intuitive.

                                                                                                                                                          1. 2

                                                                                                                                                            The problem is that Type ident syntax just doesn’t scale as soon as generics are involved, and by now I’d expect that every language has something like that.

                                                                                                                                                  1. 2

                                                                                                                                                    What are your thoughts on expanding this to expression conditions where x is not the first item in the expression? Some examples that come to mind:

                                                                                                                                                    • if 10 <= x (x on the right-hand side) (I personally like to arrange my comparisons from small to large, like a number line. That way the order of reading is also the order of size.)
                                                                                                                                                    • if stdev(x) < 20 (compare some function of x)
                                                                                                                                                    • if 11 <= x < 30 (x in a chained comparison)
                                                                                                                                                    • if 12 <= x and (x % 2) (a compound expression that checks multiple properties of x)
                                                                                                                                                    1. 2

                                                                                                                                                      Haven’t really thought about this, I’m slightly leaning against it, because it would introduce more complexity: the existing design is intentionally made the way it is, because it can be desugared at a syntactic level, without requiring typechecking or any other kind of semantic checks run first. (Not sure how important that is, though.)

                                                                                                                                                    1. 1

                                                                                                                                                      edit: I reread it, and think the idea of the partial conditional x == is OK for case like statements, and it seems my thought is actually still valid. Ok, then, wfm.

                                                                                                                                                      Interesting idea. Not sure that I like the short hand of the RHS of the conditional like that. Why not make it more generic and not require the LHS after the if? Then, it works by (conditional ‘then’ consequent)+ with an optional else alternate tacked on to the end? In this case you can mix conditionals that aren’t using the same LHS, though, I guess you end up missing out on case style conditionals…

                                                                                                                                                      1. 1

                                                                                                                                                        If I have understood you correctly (please correct me if I’m wrong) is that you often want to check different things with the same LHS. The floating point example is probably not the best one, but I think it gets the issue across: Sometimes you want to check equality, sometimes you want to check identity (and sometimes you probably want to do both) for the same value.

                                                                                                                                                        1. 2

                                                                                                                                                          My edited comment was poorly worded. My comment added nothing new after I reread. The syntax supports what I suggested, and case statements work with the partial LHS conditional. Basically, I support it. :)

                                                                                                                                                      1. 7

                                                                                                                                                        In OCaml, you can even match exceptions, replacing try-catch:

                                                                                                                                                        match do_something () with
                                                                                                                                                        | Red(...) -> ...
                                                                                                                                                        | Black(...) -> ...
                                                                                                                                                        | exception Some_exn -> ...
                                                                                                                                                        

                                                                                                                                                        I think in the case of OCaml the reason if and let are still around is just because they save characters, and they’re also more “precise” as to intention. Same reason we might have redundant forms in English.

                                                                                                                                                        1. 1

                                                                                                                                                          Wow, this is extremely helpful!

                                                                                                                                                          This makes me think whether parts of the traditional try ... catch ... finally could also be subsumed by this (in Scala catch is already more or less a pattern match).

                                                                                                                                                          Thanks for bringing this up!

                                                                                                                                                        1. 4

                                                                                                                                                          Author here, thought this might create some interesting discussion!

                                                                                                                                                          TL;DR:

                                                                                                                                                          Why have multiple distinct syntactic constructs for if-then-else, pattern matching and things like if-let, when they are largely doing the same thing (check some condition to make a decision on how the program should go on)?

                                                                                                                                                          The core idea is having a single, unified condition syntax that scales from simple one-liners to complex pattern matches that subsumes the existing syntax options.

                                                                                                                                                          1. 3

                                                                                                                                                            Are they the same?

                                                                                                                                                            Why do we even use if statements anyway?

                                                                                                                                                            k/q doesn’t use them very often, since it rarely makes things clearer. Function application is indexing, decode, projection and each-left, and so on, make it possible to write much less code.

                                                                                                                                                            for example, if x == 1.0 then "a" else "z" could be simply "za"1=

                                                                                                                                                            “one comparison operator on multiple targets” is: "zba"2 sv 1 2=\:

                                                                                                                                                            “different comparison operators, equality and identity” is: "zna"2 sv(1=;0w=)@\:

                                                                                                                                                            “method calls” are "zne"2 sv(isempty;0 in)@\:

                                                                                                                                                            Scala is an atom-language though. It can only do one thing at a time, so you see there to be a need to “check some condition to make a decision on how the program should go on” but, let’s say those lists are big, we can trivially parallelise “each”; In a data-parallel language, you very infrequently check some condition to make a decision on how the program should go on.

                                                                                                                                                            1. 9

                                                                                                                                                              Your “simply” is my “incomprehensibly”.

                                                                                                                                                              Computer languages need to strike a balance between human-language intuition and machine-parser explicitness. Simply slamming the slider all the way to the right isn’t a solution, so much as an admission of defeat, IMO.

                                                                                                                                                              1. 2

                                                                                                                                                                My idea was totally different. I’ve noticed what people comprehend depends on their thinking style, background (esp prior languages), and so on. However, there’s fewer underlying concepts or structures in play than there are surface syntaxes or API’s. So, I was thinking that maybe languages should try multiple front-ends with different syntaxes, coding styles, etc. As a start, C and Python. Each client has a tool that automatically translates it to their style with same meaning.

                                                                                                                                                                1. 1

                                                                                                                                                                  maybe languages should try multiple front-ends with different syntaxes, coding styles, etc.

                                                                                                                                                                  is it just me or does it sound like racket’s #lang?

                                                                                                                                                                  1. 1

                                                                                                                                                                    Probably also not a coincidence that Racket is at the top of my list for a future project doing something similar. ;)

                                                                                                                                                                2. 1

                                                                                                                                                                  Your “intuition” is really mediocracy.

                                                                                                                                                                  Code that is shorter has a higher chance of being correct. If you can’t read it now, learning how to read it will make you a better programmer, and that benefits you, and everyone you work with.

                                                                                                                                                                  1. 1

                                                                                                                                                                    (laughs)

                                                                                                                                                                    Downvote my thoughtful response as a troll, insult me, and then talk down to me. Really hit the internet trifecta, huh?

                                                                                                                                                                    1. 0

                                                                                                                                                                      You’re the one who said you can’t comprehend something, and yet you believe you have something important to comment on it?

                                                                                                                                                                      How is that not mediocrity?

                                                                                                                                                              2. 2

                                                                                                                                                                Nice. I wonder how it works out grammatically for parser.

                                                                                                                                                                1. 4

                                                                                                                                                                  Either indentation-based, or requiring some delimiter.

                                                                                                                                                                  I’m largely in the indentation-based camp these days, so I haven’t spent much time thinking about how to make the delimitation to look nice. I’d probably just go with mandatory curly braces around the branches.