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.

                                                                                            1. 25

                                                                                              The logo is as uninspiring as the language, so it’s a perfectly fitting design in my opinion.

                                                                                              (Not kidding, after reading the announcement, I checked whether it was April 1st…)

                                                                                              1. 9

                                                                                                I’m sure I’ll be downvotes for this, but still.

                                                                                                I found it way too unconstrictive just to blame them without clear explanation. I’m really sad not to have a thoughtful comment about why would the golang « brand » changed their visual identity.

                                                                                                These negative comments are way too easy and really do not help the lobsters community. I don’t know if I’m the only one feeling that way but the post seem important and I don’t see any comments that would make me think a bit more about the subject.

                                                                                                Sorry @soc, it’s not directly aiming at you!

                                                                                                1. 2

                                                                                                  You’re not the only one. I don’t see it changing for the better. These days, I just downvote and move on.

                                                                                                  1. 1

                                                                                                    I see how my comment could come off as a bit troll-ish, although it wasn’t intended that way.

                                                                                                    Not sure how it could have been worded differently though.

                                                                                                    1. 1

                                                                                                      I’m wasn’t especially writing about the wording but more about the purpose your the comment.

                                                                                                      The idea is that opinions should matter if they carry constructive content with them, and by that I mean a bit more context or explanations.

                                                                                                      If one do not find constructive explanations about the whys of the opinion, maybe it shouldn’t be shared to the risk of having “me too’ like comments.

                                                                                                      To be clear, I’m not blaming anyone! I just feel that these kind of comments do not stimulate anything worthwhile for the community.

                                                                                                1. 2

                                                                                                  Does anyone have experience in how this stacks up against Markdeep?

                                                                                                  1. 17

                                                                                                    Gimp 2.10 is the release that stops dumping stuff into $HOME, so even if you don’t really care about the new features, it’s a worthwhile upgrade for this reason alone!

                                                                                                    1. 4

                                                                                                      Why is that so important to you?

                                                                                                      1. 18

                                                                                                        It’s very impolite for programs to spam things into the $HOME directory without explicit permission.

                                                                                                        1. 3

                                                                                                          Yes, it’s extremely rude.

                                                                                                          1. 0

                                                                                                            Can’t decide whether this is sarcasm, but 😆

                                                                                                          2. 2

                                                                                                            I want to be able to do backups or blow away the cache without inspecting each and every .folder individually.

                                                                                                          3. 4

                                                                                                            Do you have a link to further information? “Ctrl+F HOME” in the release notes didn’t turn up anything relevant.

                                                                                                            1. 2

                                                                                                              It is mentioned here and here. Hope this helps!

                                                                                                          1. 9

                                                                                                            I’d be really surprised if things work out as described in this announcement:

                                                                                                            • They managed to ship two, maybe three larger features (if they were completely unconnected to each other), per release in the past.
                                                                                                            • At the moment they can’t even ship minor releases without breaking compatibility.
                                                                                                            • Dotty/“Scala 3” is probably at least 10 features, some of them with strong interconnections.
                                                                                                            • Project Valhalla will probably ship in less then two years’s time. This is completely unaccounted for in the planning/time table.

                                                                                                            So basically, Scala 3 will be released in roughly 2 years, while simultaneously shipping Scala 2 releases, with tons of new features and language additions, while completely replacing the compiler implementation, and promising people a simpler language.

                                                                                                            I wouldn’t hold my breath. It’s exceedingly unlikely that this will work out.

                                                                                                            1. 11

                                                                                                              Lots of other things to comment on but I firmly think interfaces-as-structural-types is one of Go’s greatest strengths. To put it in the “bad” group is upsetting and kind of made me discount the rest of the article.

                                                                                                              1. 6

                                                                                                                I think it’s a philosophical difference:

                                                                                                                Some developers write code to document to coworkers what they are doing, and some developers just want things to compile with the least effort possible.

                                                                                                                1. 2

                                                                                                                  It’s not a matter of least effort. Go is one of the first languages I know of that was primarily designed for large teams of engineers instead of individuals. Heavy focus on compile time, gofmt, not allowing compilation with unused variables, etc, all directly stem from this approach. Structural typing specifically reduces cross-team friction. Go will often make decisions that incur individual overhead to reduce overall team overhead

                                                                                                                  1. 5

                                                                                                                    Not sure I agree on this.

                                                                                                                    Compilation is not particularly fast, even compared to more more modern languages like Algol, its dependency management is a disaster, it’s error handling ignores the last few decades of lessons learned and the amount of code duplication it forces upon developers makes it hard to maintain.

                                                                                                                    I think it does well in terms of helping Google’s requirements of having all code in a large mono-repo, and enabling people who have no practical experience to produce code.

                                                                                                                    1. 2

                                                                                                                      Whether or not they succeeded at being fast wasn’t my point (though my position is they did succeed). My point is the kinds of things they emphasized in language design. Russ Cox argues that compilation speed is one of the reasons they don’t have generics, for instance.

                                                                                                                      Dependency management doesn’t matter with large teams in a mono repo, yeah, and the code duplication to me felt like it would be an enormous issue when I started but in practice, half a million lines of code later, it doesn’t come up nearly as much as you’d think.

                                                                                                                      1. 2

                                                                                                                        Compilation doesn’t have to be slow just because generics are involved, the author of D demonstrated that fairly well. I think this is rather an issue of generics not having been invented at Bell Labs (or decent error handling in this regard).

                                                                                                                        I’m not sure why “dependency management doesn’t matter if you are a Google employee” should be a convincing argument for programming-in-the-large for the millions of non-Googlers out there.

                                                                                                                    2. 2

                                                                                                                      Structural typing specifically reduces cross-team friction.

                                                                                                                      Can you talk about how structural typing accomplishes this?

                                                                                                                      EDIT: Ah, I see you answered this in another thread.

                                                                                                                  2. 3

                                                                                                                    Languages are funny. I’d consider defer to be a bad idea elevated to a language feature, but it’s in the “good” group 😀

                                                                                                                    1. 2

                                                                                                                      Can you explain why you like this idea?

                                                                                                                      1. 4

                                                                                                                        Sure! Let’s say someone writes a library you use frequently but writes it such that it does not explicitly implement any interfaces, as the author of the above post prefers. Maybe you use a library called Beep like this:

                                                                                                                        type Beeper1 struct { ... }
                                                                                                                        func NewBeeper1() *Beeper1 { ... }
                                                                                                                        func (b *Beeper1) Beep() { ... }
                                                                                                                        

                                                                                                                        You are writing your library, but want to support multiple implementations of Beepers. Maybe there’s another beeper (for a test, or another library, or something else) that also has a Beep() method. So you write your code to just expect

                                                                                                                        type Beeper interface {
                                                                                                                          Beep()
                                                                                                                        }
                                                                                                                        

                                                                                                                        Now you can use the third party code, your code, your test code, etc, without having to change the third party code upstream to implement your interface.

                                                                                                                        This is a super contrived example, but as your codebase and team grows larger, this becomes incredibly useful for reducing friction in having teams of engineers work together with minimal stepping on each other’s toes.

                                                                                                                        Ultimately, I describe Go’s structural typing system to Python programmers like the static typing equivalent of Python’s “duck typing” principle, which is, if it looks like a duck and quacks like a duck, just treat it like a duck. Coming from statically typed languages that require you to list what interfaces a concrete instance implement, Go not requiring that dance felt like a huge reduction in friction to me.

                                                                                                                        1. 2

                                                                                                                          I guess, to me, it feels like a strictly worse approach than what Rust has with traits, or Haskell with typeclasses, because there’s no explicit guarantee that a “Beeper” is actually abiding by the contract of the “Beeper” interface. It could have a “Beep” method that actually nukes Vienna. There’s friction to implementing a trait or typeclass for a new type, but there’s also value in it. If I have explicitly implemented a trait, there’s documentation of the type’s usage in that context as well as of its conformance with the interface.

                                                                                                                          1. 3

                                                                                                                            A frequent pattern in Go to get some of that functionality if you want it is to write something like

                                                                                                                            var _ InterfaceName = (*ConcreteType)(nil)
                                                                                                                            

                                                                                                                            which simply adds a compile time assertion that ConcreteType does indeed implement InterfaceName

                                                                                                                            Certainly does nothing to constrain the behavior, but I’m super happy with that (optional) middle ground

                                                                                                                            1. 3

                                                                                                                              There exists a spectrum: let’s say that on one extreme, it’s maximum programmer friction with minimum risk of mis-use; and on the other extreme, minimum programmer friction with maximum risk of mis-use. Go puts a marker down closer to the latter extreme, judging friction to be a worse evil than risk for their context, and providing some affordances (like the one-liner jtolds mentions) to mitigate some of those risks via convention.

                                                                                                                              I think no position on the spectrum is “strictly worse” than any other. It is a question of trade-offs to satisfy particular programming contexts or requirements. I think this is the same for any technical decisionmaking.

                                                                                                                              Go makes a lot of decisions this way. (Not all, and there are warts for sure — but many.) I think it is a nice and refreshing change from where most languages (like Rust) decide to land, and I think Go’s success in the market proves it is a viable, or maybe even preferable, compromise-point for many users.

                                                                                                                      1. 7

                                                                                                                        Good. The world does not need another Unix, we have more than enough of those.

                                                                                                                        1. 1

                                                                                                                          But does the world really need another Go of operating systems?

                                                                                                                          1. 1

                                                                                                                            Good point. Still, nothing ventured.

                                                                                                                        1. 4

                                                                                                                          I’m skeptic, but I think they can pull it off.

                                                                                                                          In the end, they only need to reach half of Intel’s performance, as benchmarks suggest that macOS’ performance is roughly half of Linux’ when running on the same hardware.

                                                                                                                          With their own hardware, they might be able to get closer to the raw performance offered by the CPU.

                                                                                                                          1. 7

                                                                                                                            they only need to reach half of Intel’s performance, as benchmarks suggest that macOS’ performance is roughly half of Linux’ when running on the same hardware

                                                                                                                            I’m confused. Doesn’t that mean they need to reach double Intel’s performance?

                                                                                                                            1. 11

                                                                                                                              It was probably worded quite poorly, my calculation was like:

                                                                                                                              • Raw Intel performance = 100
                                                                                                                              • macOS Intel performance ~= 50
                                                                                                                              • Raw Apple CPU performance = 50
                                                                                                                              • macOS Appe CPU performance ~= 50

                                                                                                                              So if they build chips that are half as fast as “raw” Intel, but are able to better optimize their software for their own chips, they can get way closer to the raw performance of their hardware than they manage to do on Intel.

                                                                                                                            2. 7

                                                                                                                              Why skeptic? They’ve done it twice before (68000 -> PowerPC and PowerPC -> Intel x86).

                                                                                                                              1. 4

                                                                                                                                And the PPC → x86 transition was within the past fifteen years and well after they had recovered from their slump of the ‘90s, and didn’t seem to hurt them. They’re one of the few companies in existence with recent experience transitioning microarchitectures, and they’re well-positioned to do it with minimal hiccups.

                                                                                                                                That said, I’m somewhat skeptical, too; it’s a huge undertaking even if everything goes as smoothly as it did with the x86 transition, which is very far from a guarantee. This transition will be away from the dominant architecture in its niche, which will introduce additional friction which was not present for their last transition.

                                                                                                                                1. 2

                                                                                                                                  They also did ARM32->ARM64 on iOS.

                                                                                                                                  1. 3

                                                                                                                                    That’s not much of a transition. They did i386 -> amd64 too then.

                                                                                                                                    (fun fact, I also did that, on the scale of one single Mac - swapped a Core Duo to a Core 2 Duo in a ’06 mini :D)

                                                                                                                                    1. 1

                                                                                                                                      My understanding is that they’re removing some of the 32-bit instructions on ARM. Any clue if that’s correct?

                                                                                                                                      1. 1

                                                                                                                                        AArch64 processors implement AArch32 too for backwards compatibility, just like it works on amd64.

                                                                                                                                        1. 1

                                                                                                                                          As of iOS 11, 32-bit apps won’t load. So if Apple devices that come with iOS 11 still have CPUs that implement AArch32, I’d guess it’s only because it was easier to leave it in than pull it out.

                                                                                                                                          1. 1

                                                                                                                                            Oh, sure – of course they can remove it, maybe even on the chip level (since they make fully custom ones now), or maybe not (macOS also doesn’t load 32-bit apps, right?). The point is that this transition used backwards compatible CPUs, so it’s not really comparable to 68k to PPC to x86.

                                                                                                                                            1. 1

                                                                                                                                              I of course agree that this most recent transition isn’t comparable with the others. To answer your question: the version of macOS they just released a few days ago (10.13.4) is the first to come with a boot flag that lets you disable loading of 32-bit applications to, as they put it, “prepare for a future release of macOS in which 32-bit software will no longer run without compromise.”

                                                                                                                                2. 3

                                                                                                                                  I didn’t know this. Do you know which benchmarks show macOS at half of Linux performance?

                                                                                                                                  1. 3

                                                                                                                                    Have a look at the benchmarks Phoronix has done. Some of them are older, but I think they show the general trend.

                                                                                                                                    This of course doesn’t take GPU performance into account. I could imagine that they take additional hit there as companies (that don’t use triple AAA game engines) rather do …

                                                                                                                                    Application → Vulkan API → MoltenVK → Metal

                                                                                                                                    … than write a Metal-specific backend.

                                                                                                                                    1. 1

                                                                                                                                      I guess you’re talking about these? https://www.phoronix.com/scan.php?page=article&item=macos-1013-linux

                                                                                                                                      Aside from OpenGL and a handful of other outliers for each platform, they seem quite comparable, with each being a bit faster at some things and a bit slower at others. Reading your comments I’d assumed they were showing Linux as being much faster in most areas, usually ending up about twice as fast.

                                                                                                                                  2. 3

                                                                                                                                    The things they’re slow at don’t seem to be particularly CPU architecture specific. But the poor performance of their software doesn’t seem to hurt their market share.

                                                                                                                                  1. 2

                                                                                                                                    Also interesting:

                                                                                                                                    Rust has continued to climb steadily reaching 23 in these rankings, and Scala has continued to decline.

                                                                                                                                    It seems to be easier to come up with reasonable explanations for Redmonk’s results, compared to TIOBE.

                                                                                                                                    TIOBE ranking changes always felt like there was a huge amount of noise involved in their measurements.