Threads for inactive-user

    1. 15

      This feels quite biased. For example, presumably Brave has responded to these things. Even if the response is invalid, my preference would be to show it and then demonstrate it as being invalid. When I see a big list of “they did this” with no representation of the other side it makes me very skeptical and, perhaps unfairly, dismissive.

      I have no stake in this but I will say that Brave seems to do two things that I see potential in.

      1. It is one of the few cases where blockchain seems reasonable. I know people like to hate on blockchain because of cryptocurrency, and they hate on cryptocurrency because it is largely a tool for criminals, but just from a technical perspective there are potentially valid use cases where you have a distributed system with some number of participants who you do not want to trust while still ensuring that all participants are doing some kind of work (visiting a page).

      2. It is the only browser project I have seen that actually seems like it could disrupt the singular monetization strategy of the web - advertising. Mozilla can’t exist without ad revenue, they already can’t meaningfully compete against it even if you ignore that all of their funding is ad-driven. We should probably be asking ourselves how we expect the web to continue if we reject advertising as a source. To my knowledge, Brave is the only company that’s taken an approach that even appears viable.

      I don’t really have a strong stake in this but I find this list really unhelpful. It doesn’t do any of the hard work for me. I could search online for “brave controversy” and get a list of search results like this. What would be valuable is actually providing the hard information to find, to provide analysis, etc. A listicle of “I accuse them of this” is not valuable at all unless you’re either completely uninterested in basing your opinions on information or you’re already sold on the idea that Brave is bad and you want to add more urls to your evidentiary arsenal.

      Am I to click each of these links, find the responses, analyze them myself, etc? I could do that, but it’s kind of a heavy lift.

      1. 19

        I know people like to hate on blockchain because of cryptocurrency, and they hate on cryptocurrency because it is largely a tool for criminals

        I haven’t seen this be the reason people criticize crypto for at least 10-15 years. People have concerns about the ecological concerns, and the rampancy of pump-and-dump and other scams. But people haven’t cared about crypto being used to buy drugs in years. At least, not to a prominent degree

        1. 5

          I wasn’t thinking of drugs specifically, I was thinking about scams, identity theft, blackmail, ransomware, etc. But it isn’t really important to my point, I don’t think.

          1. 2

            has ransomware moved on from cryptocurrency?

            1. 0

              Bitcoin is ESG and Brave use a blockchain that is not proof of work. FIAT as USD is the most used to buy drugs and fund wars. Also Chainalisys loves open ledgers because transactions can be traced.

            2. 12

              The way Brave disrupts advertising on the Web is by intercepting it and replacing the ads with their own ads. It is the sleaziest of all possible disruptions.

              1. 1

                Why is that? I don’t know much about that, it sounds fine to me, personally.

                1. 8

                  Assuming content creators (god I hate that word) actually try to make a living using only advertisement and actually give a shit while choosing partners it’s taking away their income while still showing the user advertisement.

                  It’s kind of like syphoning off the money the actual creator could make.

                  It feels to me like selling an open source product you don’t develop (without support) or selling fandubs.

                  1. 1

                    I’m not really familiar with this stuff, so I don’t know much about it. My understanding was that Brave intended to pay creators in that circumstance, perhaps not though?

                    1. 6

                      Afaict from all the controversies they don’t give a shit, are intransperent and come off as evil. See everything in the linked reddit list. And I don’t know either how brave is supposed to work, but after everything I read about it https://lobste.rs/s/iopw1d/what_s_up_with_lobste_rs_blocking_brave I don’t want to touch it with a 10 foot pole

                      1. 2

                        Yeah, that’s fair. I am not really trying to defend Brave. I just wanted to point out that a big list of accusations isn’t very helpful to me personally and I think that the premise of finding new ways to monetize the web is valuable. I have no other thoughts on the matter tbh.

              2. 10

                Am I to click each of these links, find the responses, analyze them myself, etc

                I tried to do that in this thread which has some of the bigger criticisms: https://lobste.rs/s/iopw1d/what_s_up_with_lobste_rs_blocking_brave#c_ezne5h

                After engaging in that discussion, it reaffirmed to me that two reasonable people can see the exact same events/discussions and come to opposite conclusions.

                1. 13

                  two reasonable people can see the exact same events/discussions and come to opposite conclusions

                  It’s mostly preconceived notions/beliefs. For some reason a lot of people are predisposed to give the benefit of the doubt to Brave, and so we gets lots of rebuttals which try to see the things Brave has done in the best possible light/downplay the criticism/find a charitable interpretation/etc.

                  By contrast a lot of people, for whatever reason, are predisposed to never give benefit of the doubt to Mozilla, so we get lots of angry threads where people will do whatever they can to view decisions by Mozilla in a negative light.

                  Personally I’m in the exact opposite position – I am inclined to give Mozilla the benefit of the doubt and look for charitable interpretations of things they do (especially the recent ToS kerfuffle, which just seems like silly overreaction by the internet), and inclined to view Brave and especially Brendan Eich negatively and never give the benefit of the doubt.

                  1. 2

                    We can dig further about why one wants to give the benefit of the doubt and another does not, and lay out all the arguments, and still reach opposite conclusions.

                    I agree if you mean to say that it’s ideological, I think that is true by definition.

                2. 5

                  It is one of the few cases where blockchain seems reasonable.

                  To me, blockchain is merely a public ledger that cannot (easily) be amended once written to. In that case, Git’s commit system is technically blockchain. Each commit hash depends on the previous hash and the commit’s diff, meaning it cannot be edited without throwing everyone’s clone out of sync. Pretty useful!

                    1. 22

                      Based on activities listed in the OP, Brave is funded by advertising (injecting their own ads into your browser, replacing the ads of the site you are visiting), soliciting donations for open source projects they have no relation with and pocketing the funds, subscription fees from the VPN that they install without permission, scraping web sites without permission and reselling copyrighted data for AI training, and injecting URLs with affiliate codes into your web browser.

                      Based on Brave’s own description of their company, from their FAQ:

                      We generate revenue in several ways, including:

                      • The sale of New Tab Takeovers, Brave Search Ads, and other Brave Ads (the first-party ad units that users opt into via our privacy-preserving ad platform). Note that opted-in users receive 70% of this ad revenue back in the form of BAT.
                      • Subscriptions to our premium products: Brave Firewall + VPN, Brave Talk Premium, Brave Leo Premium, and Brave Search Premium.
                      • A 1% fee on fiat-to-crypto transactions (through onramp partners) in Brave Wallet, and a nominal fee on creator tips and auto-contributions made via Brave Rewards.
                      • Subscriptions to our Search API.
                      • Partnership deals (for example with platforms integrated into the Brave browser).

                      Elsewhere in the FAQ, they talk about collecting user data and selling that to advertisers, for targeted advertising.

                      1. 1

                        Early on I think the intent was to fund entirely via BAT. At this point, from what I understand at least, they have a number of things they’re doing, including at least some funding being advertisement based.

                    2. 6

                      I think “x as code” in most cases would be better expressed by saying “x as an artifact that can be checked into your version control system”, though you lose a little bit of snappiness

                      1. 6

                        Well you can check almost anything into source control.
                        So we have to go deeper: “x as an artifact that can be checked into your version control system in a way that allows easy comparison of revisions.”
                        It really rolls off the tongue nicely!

                      2. 3

                        I agree generally but I feel like point 1 doesn’t really support the argument

                        A stacked list of text requires only a one-directional scan (top-to-bottom), while icon grids demand bi-directional scanning (top-to-bottom and left-to-right).

                        I feel like this is more of a critique of grid based layouts and not really related to the topic of icons

                        1. 5

                          I abandoned Apple back in 2020. It was when they did the whole csam thing. I do have a Mac at work, which is better than Windows, but I always make it a point. Never to update until the next year for any given OS. So if I were to do the new one it would be in June or July. This seems to avoid a lot of the problems. On my from theater PC. I use Debian. Even though x windows may seem old, the KDE and experience” just works “. I don’t have any raise many problems as in Windows, or OSX. Just a zoom and or web browsing machine. It’s the best machine I’ve ever had.

                          1. 2

                            It was when they did the whole csam thing.

                            I’m curious about why that was a problem for you?

                            1. 9

                              I didn’t like the fact that they would be scanning my pictures. Even though I don’t have any such material in my library, guilty until proven innocent simply goes against my ethos.

                              1. 2

                                They were only scanning files that would be uploaded to iCloud and this was before advanced data protection was introduced so icloud could’ve scanned them anyway

                              2. 4

                                Forcing a little robot in my computer making sure I’m behaving the way it wants seems like a violation of the third amendment.

                                Why is it not a problem for you?

                            2. 1

                              Deciding whether to delete my account before 16th March.

                              1. 1

                                Why? Is your subscription expiring and you don’t want to renew? 🙂

                                1. 2

                                  For those who have been living under a rock:

                                  On March 16, the UK’s Online ‘Safety’ Act comes into force. This is a staggering piece of regulatory capture which makes it infeasible for small forum operators to survive in the UK and drives people big US-owned platforms. lobste.rs will be using GeoIP blocking for UK users to avoid needing to comply, at which point those of us in the UK will lose access.

                                  The question is whether to delete accounts to make them visibly inactive before then.

                                  1. 1

                                    The UK is going to get cut off so I won’t get the chance after 16th March.

                                    1. 1

                                      Understood but it wasn’t clear why deleting the account would not be possible after that date.

                                      1. 1

                                        Because there will be no access from the UK and I don’t want to start mucking about with proxy servers.

                                2. 7

                                  What if there were a browser that you have to pay $20/month to use. For that expenditure, the browser legally guarantees to

                                  1. NOT use your data
                                  2. NOT feed your data into an LLM

                                  It could still be open-source. But I trust a product more when I know up front how it’s monetized and what the incentive structure is for the developer(s).

                                  1. 16

                                    Then millions of people around the world would not be able to afford it.

                                    1. 3

                                      Yes, but that could still be a profitable business model. Hey.com isn’t free, but it’s thriving.

                                      1. 12

                                        Yeah but the people left on the outside of the profitable business model still matter, and deserve to have options that don’t exploit them. It’s part of the solution, but it can’t be the whole solution

                                  2. 9

                                    Our Swift server codebase has around 30,000 lines of code. It produces a binary of 60 MB, and builds in ten minutes.

                                    10 minutes of just build time would be too much for me…

                                    1. 7

                                      Yeah, 30kloc really isn’t very big… I regularly work with a ~14 kloc C++ code base which builds in 15 seconds on my 3.5 year old laptop, and a ~20 kloc code base (+ vendored catch2, + auto generated protobuf code) which builds in just under a minute on the same laptop. And C++ isn’t exactly known for its fast compile times either. 10 minutes is an eternity, and I imagine Apple gives its developer significantly more powerful machines than my 2021 M1 Pro.

                                      1. 5

                                        Yeah, 50 lines per second.

                                        Swift has ridiculous compile times.

                                        60 MB binary also seems excessive for 30KLOC.

                                        Only 4x faster than (interpreted) Python 2 also seems a bit on the slow side for the a compiled language. Unless it’s all DB access or other I/O.

                                        1. 1

                                          I want to add: the auto generated protobuf code is 39kloc across 24 source files. I didn’t know it was that much code. So in total it’s 59 kloc, twice as much as the Swift code base in the article.

                                        2. 3

                                          That is kind of long! But I assume that’s a clean build; hopefully incremental builds are a lot quicker.

                                          1. 2

                                            Compile times are my main complaint. If not for that it would be my clear favorite language.

                                              1. 2

                                                I’m compiling 12,000 lines in five seconds on an ancient Mac Mini. No dependencies outside the standard library though.

                                                1. 2

                                                  I can’t find build time benchmarks but both communities are of the opinion compile times are not good enough. In this project’s case I suspect the ten minutes includes pulling their dependencies and building them too, which is the norm with SwiftPM.

                                              2. 3

                                                Dealing with toddler son.

                                                If you don’t have a kid yet… Please try to enjoy your completely massive amount of free time before it ends for 18 years

                                                1. 4
                                                2. 69

                                                  The majority of bugs (quantity, not quality/severity) we have are due to the stupid little corner cases in C that are totally gone in Rust. Things like simple overwrites of memory (not that rust can catch all of these by far), error path cleanups, forgetting to check error values, and use-after-free mistakes. That’s why I’m wanting to see Rust get into the kernel, these types of issues just go away, allowing developers and maintainers more time to focus on the REAL bugs that happen (i.e. logic issues, race conditions, etc.)

                                                  This is an extremely strong statement.

                                                  I think a few things are also interesting:

                                                  1. I think people are realizing how low quality the Linux kernel code is, how haphazard development is, how much burnout and misery is involved, etc.

                                                  2. I think people are realizing how insanely not in the open kernel dev is, how much is private conversations that a few are privy to, how much is politics, etc.

                                                  1. 35

                                                    I think people are realizing how insanely not in the open kernel dev is, how much is private conversations that a few are privy to, how much is politics, etc.

                                                    The Hellwig/Ojeda part of the thread is just frustrating to read because it almost feels like pleading. “We went over this in private” “we discussed this already, why are you bringing it up again?” “Linus said (in private so there’s no record)”, etc., etc.

                                                    1. 45

                                                      Dragging discussions out in front of an audience is a pretty decent tactic for dealing with obstinate maintainers. They don’t like to explain their shoddy reasoning in front of people, and would prefer it remain hidden. It isn’t the first tool in the toolbelt but at a certain point there is no convincing people directly.

                                                      1. 31

                                                        Dragging discussions out in front of an audience is a pretty decent tactic for dealing with

                                                        With quite a few things actually. A friend of mine is contributing to a non-profit, which until recently had this very toxic member (they’ve even attempted felony). They were driven out of the non-profit very soon after members talked in a thread that was accessible to all members. Obscurity is often one key component of abuse, be it mere stubbornness or criminal behaviour. Shine light, and it often goes away.

                                                        1. 13

                                                          IIRC Hintjens noted this quite explicitly as a tactic of bad actors in his works.

                                                          It’s amazing how quickly people are to recognize folks trying to subvert an org piecemeal via one-off private conversations once everybody can compare notes. It’s equally amazing to see how much the same people beforehand will swear up and down oh no that’s a conspiracy theory such things can’t happen here until they’ve been burned at least once.

                                                          This is an active, unpatched attack vector in most communities.

                                                          1. 12

                                                            I’ve found the lowest example of this is even meetings minutes at work. I’ve observed that people tend to act more collaboratively and seek the common good if there are public minutes, as opposed to trying to “privately” win people over to their desires.

                                                        2. 5

                                                          There is something to be said for keeping things between people with skin in the game.

                                                          It’s flipped over here, though, because more people want to contribute. The question is whether it’ll be stabe long-term.

                                                        3. 18

                                                          I think people are realizing how low quality the Linux kernel code is, how haphazard development is, how much burnout and misery is involved, etc.

                                                          Something I’ve noticed is true in virtually everything I’ve looked deeply at is the majority of work is poor to mediocre and most people are not especially great at their jobs. So it wouldn’t surprise me if Linux is the same. (…and also wouldn’t surprise me if the wonderful Rust rewrite also ends up poor to mediocre.)

                                                          yet at the same time, another thing that astonishes me is how much stuff actually does get done and how well things manage to work anyway. And Linux also does a lot and works pretty well. Mediocre over the years can end up pretty good.

                                                          1. 14

                                                            After tangentially following the kernel news, I think a lot of churning and death spiraling is happening. I would much rather have a rust-first kernel that isn’t crippled by the old guard of C developers reluctant to adopt new tech.

                                                            Take all of this energy into RedoxOS and let Linux stay in antiquity.

                                                            1. 36

                                                              I’ve seen some of the R4L people talk on Mastodon, and they all seem to hate this argument.

                                                              They want to contribute to Linux because they use it, want to use it, and want to improve the lives of everyone who uses it. The fact that it’s out there and deployed and not a toy is a huge part of the reason why they want to improve it.

                                                              Hopping off into their own little projects which may or may not be useful to someone in 5-10 years’ time is not interesting to them. If it was, they’d already be working on Redox.

                                                              1. 2

                                                                The most effective thing that could happen is for the Linux foundation, and Linus himself, to formally endorse and run a Rust-based kernel. They can adopt an existing one or make a concerted effort to replace large chunks of Linux’s C with Rust.

                                                                IMO the Linux project needs to figure out something pretty quickly because it seems to be bleeding maintainers and Linus isn’t getting any younger.

                                                                1. 0

                                                                  They may be misunderstanding the idea that others are not necessarily incentivized to do things just because it’s interesting for them (the Mastodon posters).

                                                                2. 4

                                                                  Yep, I made a similar remark upthread. A Rust-first kernel would have a lot of benefits over Linux, assuming a competent group of maintainers.

                                                                  1. 4

                                                                    along similar lines: https://drewdevault.com/2024/08/30/2024-08-30-Rust-in-Linux-revisited.html

                                                                    Redox does have the chains of trying to do new OS things. An ABI-compatible Rust rewrite of the Linux kernel might get further along than expected (even if it only runs in virtual contexts, without hardware support (that would come later.))

                                                                    1. 44

                                                                      Linux developers want to work on Linux, they don’t want to make a new OS. Linux is incredibly important, and companies already have Rust-only drivers for their hardware.

                                                                      Basically, sure, a new OS project would be neat, but it’s really just completely off topic in the sense that it’s not a solution for Rust for Linux. Because the “Linux” part in that matters.

                                                                      1. 19

                                                                        I read a 25+ year old article [1] from a former Netscape developer that I think applies in part

                                                                        The idea that new code is better than old is patently absurd. Old code has been used. It has been tested. Lots of bugs have been found, and they’ve been fixed. There’s nothing wrong with it. It doesn’t acquire bugs just by sitting around on your hard drive. Au contraire, baby! Is software supposed to be like an old Dodge Dart, that rusts just sitting in the garage? Is software like a teddy bear that’s kind of gross if it’s not made out of all new material?

                                                                        Adopting a “rust-first” kernel is throwing the baby out with the bathwater. Linux has been beaten into submission for over 30 years for a reason. It’s the largest collaborative project in human history and over 30 million lines of code. Throwing it out and starting new would be an absolutely herculean effort that would likely take years, if it ever got off the ground.

                                                                        [1] https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/

                                                                        1. 33

                                                                          The idea that old code is better than new code is patently absurd. Old code has stagnated. It was built using substandard, out of date methodologies. No one remembers what’s a bug and what’s a feature, and everyone is too scared to fix anything because of it. It doesn’t acquire new bugs because no one is willing to work on that weird ass bespoke shit you did with your C preprocessor. Au contraire, baby! Is software supposed to never learn? Are we never to adopt new tools? Can we never look at something we’ve built in an old way and wonder if new methodologies would produce something better?

                                                                          This is what it looks like to say nothing, to beg the question. Numerous empirical claims, where is the justification?

                                                                          It’s also self defeating on its face. I take an old codebase, I fix a bug, the codebase is now new. Which one is better?

                                                                          1. 16

                                                                            Like most things in life the truth is somewhere in the middle. There is a reason there is the concept of a “mature node” in the semiconductor industry. They accept that new is needed for each node, but also that the new thing takes time to iron out the kinks and bugs. This is the primary reason why you see apple take new nodes on first before Nvidia for example, as Nvidia require much larger die sizes, and so less defects per square mm.

                                                                            You can see this sometimes in software for example X11 vs Wayland, where adoption is slow, but most definetly progressing and now-days most people can see that Wayland is now, or is going to become the dominant tech in the space.

                                                                            1. 16

                                                                              The truth lies where it lies. Maybe the middle, maybe elsewhere. I just don’t think we’ll get to the truth with rhetoric.

                                                                                1. 7

                                                                                  I don’t think this would qualify as dialectic, it lacks any internal debate and it leans heavily on appeals by analogy and intuition/ emotion. The post itself makes a ton of empirical claims without justification even beyond the quoted bit.

                                                                            2. 15

                                                                              “Good” is subjective, but there is real evidence that older code does contain fewer vulnerabilities: https://www.usenix.org/conference/usenixsecurity22/presentation/alexopoulos

                                                                              That means we can probably keep a lot of the old trusty Linux code around while making more of the new code safe by writing it in Rust in the first place.

                                                                              1. 10

                                                                                I don’t think that’s a fair assessment of Spolsky’s argument or of CursedSilicon’s application of it to the Linux kernel.

                                                                                Firstly, someone has already pointed out the research that suggests that existing code has fewer bugs in than new code (and that the older code is, the less likely it is to be buggy).

                                                                                Secondly, this discussion is mainly around entire codebases, not just existing code. Codebases usually have an entire infrastructure around them for verifying that the behaviour of the codebase has not changed. This is often made up of tests, but it’s also made up of the users who try out a release of a codebase and determine whether it’s working for them. The difference between making a change to an existing codebase and releasing a new project largely comes down to whether this verification (both in terms of automated tests and in terms of users’ ability to use the new release) works for the new code.

                                                                                Given this difference, if I want to (say) write a new OS completely in Rust, I need to choose: Do I want to make it completely compatible with Linux, and therefore take on the significant challenge of making sure everything behaves truly the same? Or do I make significant breaking changes, write my own OS, and therefore force potential adopters to rebuild their entire Linux workflows in my new OS?

                                                                                The point is not that either of these options are bad, it is that they represent significant risks to a project. Added to the general risk that is writing new code, this produces a total level of risk that might be considered the baseline risk of doing a rewrite. Now risk is not bad per se! If the benefits of being able to write an OS in a language like Rust outweigh the potential risks, then it still makes sense to perform the rewrite. Or maybe the existing Linux kernel is so difficult to maintain that a new codebase really would be the better option. But the point that CursedSilicon was making by linking the Spolsky piece was, I believe, that the risks for a project like the Linux kernel are very high. There is a lot of existing, old code. And there is a very large ecosystem where either breaking or maintaining compatibility would each come with significant challenges.

                                                                                Unfortunately, it’s very difficult to measure the risks and benefits here in a quantitative, comparable way, so I think where you fall on the “rewrite vs continuity” spectrum will depend mostly on what sort of examples you’ve seen, and how close you think this case is to those examples. I don’t think there’s any objective way to say whether it makes more sense to have something like R4L, or something like RedoxOS.

                                                                                1. 7

                                                                                  Firstly, someone has already pointed out the research that suggests that existing code has fewer bugs in than new code (and that the older code is, the less likely it is to be buggy).

                                                                                  I haven’t read it yet, but I haven’t made an argument about that, I just created a parody of the argument as presented. I’ll be candid, i doubt that the research is going to compel me to believe that newer code is inherently buggier, it may compel me to confirm my existing belief that testing software in the field is one good method to find some classes of bugs.

                                                                                  Secondly, this discussion is mainly around entire codebases, not just existing code.

                                                                                  I guess so, it’s a bit dependent on where we say the discussion starts - three things are relevant; RFL, which is not a wholesale rewrite, a wholesale rewrite of the Linux kernel, and Netscape. RFL is not about replacing the entire Linux kernel, although perhaps “codebase” here refers to some sort of unit, like a driver. Netscape wanted a wholesale rewrite, based on the linked post, so perhaps that’s what’s really “the single worst strategic mistake that any software company can make”, but I wonder what the boundary here is? Also, the article immediately mentions that Microsoft tried to do this with Word but it failed, but that Word didn’t suffer from this because it was still actively developed - I wonder if it really “failed” just because pyramid didn’t become the new Word? Did Microsoft have some lessons learned, or incorporate some of that code? Dunno.

                                                                                  I think I’m really entirely justified when I say that the post is entirely emotional/ intuitive appeals, rhetoric, and that it makes empirical claims without justification.

                                                                                  There’s a subtle reason that programmers always want to throw away the code and start over. The reason is that they think the old code is a mess. And here is the interesting observation: they are probably wrong. The reason that they think the old code is a mess is because of a cardinal, fundamental law of programming:

                                                                                  This is rhetoric. These are unsubstantiated empirical claims. The article is all of this. It’s fine as an interesting, thought provoking read that gets to the root of our intuitions, but I think anyone can dismiss it pretty easily since it doesn’t really provide much in the form of an argument.

                                                                                  It’s important to remember that when you start from scratch there is absolutely no reason to believe that you are going to do a better job than you did the first time.

                                                                                  Again, totally unsubstantiated. I have MANY reasons to believe that, it is simply question begging to say otherwise.

                                                                                  That’s all this post is. Over and over again making empirical claims with no evidence and question beggign.

                                                                                  We can discuss the risks and benefits, I’d advocate for that. This article posted doesn’t advocate for that. It’s rhetoric.

                                                                                  1. 11

                                                                                    existing code has fewer bugs in than new code (and that the older code is, the less likely it is to be buggy).

                                                                                    This is a truism. It is survival bias. If the code was buggy, it would eventually be found and fixed. So all things being equal newer code is riskier than old code. But it’s also been impirically shown that using Rust for new code is not “all things being equal”. Google showed that new code in Rust is as reliable as old code in C. Which is good news: you can use old C code from new Rust projects without the risk that comes from new C code.

                                                                                    1. 5

                                                                                      But it’s also been impirically shown that using Rust for new code is not “all things being equal”.

                                                                                      Yeah, this is what I’ve been saying (not sure if you’d meant to respond to me or the parent, since we agree) - the issue isn’t “new” vs “old” it’s things like “reviewed vs unreviewed” or “released vs unreleased” or “tested well vs not tested well” or “class of bugs is trivial to express vs class of bugs is difficult to express” etc.

                                                                                      1. 2

                                                                                        I don’t disagree that the rewards can outweigh the risks, and in this case I think there’s a lot of evidence that suggests that memory safety as a default is really important for all sorts of reasons. Let alone the many other PL developments that make Rust a much more suitable language to develop in than C.

                                                                                        That doesn’t mean the risks don’t exist, though.

                                                                                  2. 4

                                                                                    It’s also self defeating on its face. I take an old codebase, I fix a bug, the codebase is now new. Which one is better?

                                                                                    Nobody would call an old codebase with a handful of fixes a new codebase, at least not in the contexts in which those terms have been used here.

                                                                                      1. 6

                                                                                        It’s a Ship of Theseus—at no point can you call it a “new” codebase, but after a period of time, it could be completely different code. I have a C program I’ve been using and modifying for 25 years. At any given point, it would have been hard to say “this is now a new codebase, yet not one line of code in the project is the same as when I started (even though it does the same thing at it always has).

                                                                                        1. 4

                                                                                          I don’t see the point in your question. It’s going to depend on the codebase, and on the nature of the changes; it’s going to be nuanced, and subjective at least to some degree. But the fact that it’s prone to subjectivity doesn’t mean that you get to call an old codebase with a single fixed bug a new codebase, without some heavy qualification which was lacking.

                                                                                          1. 1

                                                                                            If it requires all of that nuance and context maybe the issue isn’t what’s “old” and what’s “new”.

                                                                                              1. 4

                                                                                                What’s old and new is poorly defined and yet there’s an argument being made that “old” and “new” are good indicators of something. If they’re so poorly defined that we have to bring in all sorts of additional context like the nature of the changes, not just when they happened or the number of lines changed, etc, then it seems to me that we would be just as well served to throw away the “old” and “new” and focus on that context.

                                                                                                1. 2

                                                                                                  I feel like enough people would agree more-or-less on what was an “old” or “new” codebase (i.e. they would agree given particular context) that they remain useful terms in a discussion. The general context used here is apparent (at least to me) given by the discussion so far: an older codebase has been around for a while, has been maintained, has had kinks ironed out.

                                                                                                  1. 3

                                                                                                    There’s a really important distinction here though. The point is to argue that new projects will be less stable than old ones, but you’re intuitively (and correctly) bringing in far more important context - maintenance, testing, battle testing, etc. If a new implementation has a higher degree of those properties then it being “new” stops being relevant.

                                                                                                    1. 2

                                                                                                      Ok, but:

                                                                                                      It’s also self defeating on its face. I take an old codebase, I fix a bug, the codebase is now new. Which one is better?

                                                                                                      My point was that this statement requires a definition of “new codebase” that nobody would agree with, at least in the context of the discussion we’re in. Maybe you are attacking the base proposition without applying the surrounding context, which might be valid if this were a formal argument and not a free-for-all discussion.

                                                                                                      If a new implementation has a higher degree of those properties

                                                                                                      I think that it would be considered no longer new if it had had significant battle-testing, for example.

                                                                                                      FWIW the important thing in my view is that every new codebase is a potential old codebase (given time and care), and a rewrite necessarily involves a step backwards. The question should probably not be, which is immediately better?, but, which is better in the longer term (and by how much)? However your point that “new codebase” is not automatically worse is certainly valid. There are other factors than age and “time in the field” that determine quality.

                                                                                      2. 1

                                                                                        Methodologies don’t matter for quality of code. They could be useful for estimates, cost control, figuring out whom you shall fire etc. But not for the quality of code.

                                                                                        1. 4

                                                                                          You’re suggesting that the way you approach programming has no bearing on the quality of the produced program?

                                                                                          1. 3

                                                                                            I’ve never observed a programmer become better or worse by switching methodology. Dijkstra would’ve not became better if you made him do daily standups or go through code reviews.

                                                                                            There are ways to improve your programming by choosing different approach but these are very individual. Methodology is mostly a beancounting tool.

                                                                                            1. 3

                                                                                              When I say “methodology” I’m speaking very broadly - simply “the approach one takes”. This isn’t necessarily saying that any methodology is better than any other. The way I approach a task today is better, I think, then the way that I would have approached that task a decade ago - my methodology has changed, the way I think has changed. Perhaps that might mean I write more tests, or I test earlier, but it may mean exactly the opposite, and my methods may only work best for me.

                                                                                              I’m not advocating for “process” or ubiquity, only that the approach one tasks may improve over time, which I suspect we would agree on.

                                                                                      3. 28

                                                                                        If you take this logic to its end, you should never create new things.

                                                                                        At one point in time, Linux was also the new kid on the block.

                                                                                        The best time to plant a tree is 30 years ago. The second best time is now.

                                                                                        1. 7

                                                                                          I read a 25+ year old article [1] from a former Netscape developer that I think applies in part

                                                                                          I don’t think Joel Spolsky was ever a Netscape developer. He was a Microsoft developer who worked on Excel.

                                                                                          1. 2

                                                                                            My mistake! The article contained a bit about Netscape and I misremembered it

                                                                                          2. 5

                                                                                            It’s the largest collaborative project in human history and over 30 million lines of code.

                                                                                            How many of those lines are part of the core? My understanding was that the overwhelming majority was driver code. There may not be that much core subsystem code to rewrite.

                                                                                            1. 5

                                                                                              For a previous project, we included a minimal Linux build. It was around 300 KLoC, which included networking and the storage stack, along with virtio drivers.

                                                                                              That’s around the size a single person could manage and quite easy with a motivated team.

                                                                                              If you started with DPDK and SPDK then you’d already have filesystems and a copy of the FreeBSD network stack to run in isolated environments.

                                                                                              1. 2

                                                                                                Once many drivers share common rust wrappers over core subsystems, you could flip it and write the subsystem in Rust. Then expose C interface for the rest.

                                                                                                1. 3

                                                                                                  Oh sure, that would be my plan as well. And I bet some subsystem maintainers see this coming, and resist it for reasons that aren’t entirely selfless.

                                                                                                  1. 3

                                                                                                    That’s pretty far into the future, both from a maintainer acceptance PoV and from a rustc_codegen_gcc and/or gccrs maturity PoV.

                                                                                                    1. 4

                                                                                                      Sure. But I doubt I’ll running a different kernel 10y from now.

                                                                                                      And like us, those maintainers are not getting any younger and if they need a hand, I am confident I’ll get faster into it with a strict type checker.

                                                                                                      I am also confident nobody in our office would be able to help out with C at all.

                                                                                                2. 4

                                                                                                  It’s the largest collaborative project in human history

                                                                                                  This cannot possibly be true.

                                                                                                  1. 5

                                                                                                    It’s the largest collaborative project in human history

                                                                                                    It’s the largest collaborative open source os kernel project in human history

                                                                                                    1. 4

                                                                                                      It’s been described as such based purely on the number of unique human contributions to it

                                                                                                  2. 7

                                                                                                    I see that Drew proposes a new OS in that linked article, but I think a better proposal in the same vein is a fork. You get to keep Linux, but you can start porting logic to Rust unimpeded, and it’s a manageable amount of work to keep porting upstream changes.

                                                                                                    Remember when libav forked from ffmpeg? Michael Niedermayer single-handedly ported every single libav commit back into ffmpeg, and eventually, ffmpeg won.

                                                                                                    At first there will be extremely high C percentage, low Rust percentage, so porting is trivial, just git merge and there will be no conflicts. As the fork ports more and more C code to Rust, however, you start to have to do porting work by inspecting the C code and determining whether the fixes apply to the corresponding Rust code. However, at that point, it means you should start seeing productivity gains, community gains, and feature gains from using a better language than C. At this point the community growth should be able to keep up with the extra porting work required. And this is when distros will start sniffing around, at first offering variants of the distro that uses the forked kernel, and if they like what they taste, they might even drop the original.

                                                                                                    I genuinely think it’s a strong idea, given the momentum and potential amount of labor Rust community has at its disposal.

                                                                                                    I think the competition would be great, especially in the domain of making it more contributor friendly to improve the kernel(s) that we use daily.

                                                                                                    1. 15

                                                                                                      I certainly don’t think this is impossible, for sure. But the point ultimately still stands: Linux kernel devs don’t want a fork. They want Linux. These folks aren’t interested in competing, they’re interested in making the project they work on better. We’ll see if some others choose the fork route, but it’s still ultimately not the point of this project.

                                                                                                    2. 5

                                                                                                      Linux developers want to work on Linux, they don’t want to make a new OS.

                                                                                                      While I don’t personally want to make a new OS, I’m not sure I actually want to work on Linux. Most of the time I strive for portability, and so abstract myself from the OS whenever I can get away with it. And when I can’t, I have to say Linux’s API isn’t always that great, compared to what the BSDs have to offer (epoll vs kqueue comes to mind). Most annoying though is the lack of documentation for the less used APIs: I’ve recently worked with Netlink sockets, and for the proc stuff so far the best documentation I found was the freaking source code of a third party monitoring program.

                                                                                                      I was shocked. Complete documentation of the public API is the minimum bar for a project as serious of the Linux kernel. I can live with an API I don’t like, but lack of documentation is a deal breaker.

                                                                                                      1. 10

                                                                                                        While I don’t personally want to make a new OS, I’m not sure I actually want to work on Linux.

                                                                                                        I think they mean that Linux kernel devs want to work on the Linux kernel. Most (all?) R4L devs are long time Linux kernel devs. Though, maybe some of the people resigning over LKML toxicity will go work on Redox or something…

                                                                                                        1. 5

                                                                                                          I’m talking about the people who develop the Linux kernel, not people who write userland programs for Linux.

                                                                                                      2. 2

                                                                                                        Re-Implementing the kernel ABI would be a ton of work for little gain if all they wanted was to upstream all the work on new hardware drivers that is already done - and then eventually start re-implementing bits that need to be revised anyway.

                                                                                                    3. 3

                                                                                                      If the singular required Rust toolchain didn’t feel like such a ridiculous to bootstrap 500 ton LLVM clown car I would agree with this statement without reservation.

                                                                                                        1. 4

                                                                                                          Zig is easier to implement (and I personally like it as a language) but doesn’t have the same safety guarantees and strong type system that Rust does. It’s a give and take. I actually really like Rust and would like to see a proliferation of toolchain options, such as what’s in progress in GCC land. Overall, it would just be really nice to have an easily bootstrapped toolchain that a normal person can compile from scratch locally, although I don’t think it necessarily needs to be the default, or that using LLVM generally is an issue. However, it might be possible that no matter how you architect it, Rust might just be complicated enough that any sufficiently useful toolchain for the language could just end up being a 500 ton clown car of some kind anyways.

                                                                                                          1. 2

                                                                                                            Depends on which parts of GP’s statement you care about: LLVM or bootstrap. Zig is still depending on LLVM (for now), but it is no longer bootstrappable in a limited number of steps (because they switched from a bootstrap C++ implementation of the compiler to keeping a compressed WASM build of the compiler as a blob.

                                                                                                            1. 2

                                                                                                              Yep, although I would also add it’s unfair to judge Zig in any case on this matter now given it’s such a young project that clearly is going to evolve a lot before the dust begins to settle (Rust is also young, but not nearly as young as Zig). In ten to twenty years, so long as we’re all still typing away on our keyboards, we might have a dozen Zig 1.0 and a half dozen Zig 2.0 implementations!

                                                                                                      1. 6

                                                                                                        Yeah, the absurdly low code quality and toxic environment make me think that Linux is ripe for disruption. Not like anyone can produce a production kernel overnight, but maybe a few years of sustained work might see a functional, production-ready Rust kernel for some niche applications and from there it could be expanded gradually. While it would have a lot of catching up to do with respect to Linux, I would expect it to mature much faster because of Rust, because of a lack of cruft/backwards-compatibility promises, and most importantly because it could avoid the pointless drama and toxicity that burn people out and prevent people from contributing in the first place.

                                                                                                        1. 14

                                                                                                          the absurdly low code quality

                                                                                                          What is the, some kind of a new meme? Where did you hear it first?

                                                                                                          1. 22

                                                                                                            From the thread in OP, if you expand the messages, there is wide agreement among the maintainers that all sorts of really badly designed and almost impossible to use (safely) APIs ended up in the kernel over the years because the developers were inexperienced and kind of learning kernel development as they went. In retrospect they would have designed many of the APIs very differently.

                                                                                                            1. 4

                                                                                                              Someone should compile everything to help future OS developers avoid those traps! There are a lot of exieting non-posix experiments though.

                                                                                                            2. 14

                                                                                                              It’s based on my forays into the Linux kernel source code. I don’t doubt there’s some quality code lurking around somewhere, but the stuff I’ve come across (largely filesystem and filesystem adjacent) is baffling.

                                                                                                              1. 7

                                                                                                                Seeing how many people are confidently incorrect about Linux maintainers only caring about their job security and keeping code bad to make it a barrier to entry, if nothing else taught me how online discussions are a huge game of Chinese whispers where most participants don’t have a clue of what they are talking about.

                                                                                                                1. 15

                                                                                                                  I doubt that maintainers are “only caring about their job security and keeping back code” but with all due respect: You’re also just taking arguments out of thin air right now. What I do believe is what we have seen: Pretty toxic responses from some people and a whole lot of issues trying to move forward.

                                                                                                                  1. 8

                                                                                                                    Seeing how many people are confidently incorrect about Linux maintainers only caring about their job security and keeping code bad to make it a barrier to entry

                                                                                                                    Huh, I’m not seeing any claim to this end from the GP, or did I not look hard enough? At face value, saying that something has an “absurdly low code quality” does not imply anything about nefarious motives.

                                                                                                                    1. 10
                                                                                                                      1. 7

                                                                                                                        Indeed that remark wasn’t directly referring to GP’s comment, but rather to the range of confidently incorrect comments that I read in the previous episodes, and to the “gatekeeping greybeards” theme that can be seen elsewhere on this page. First occurrence, found just by searching for “old”: Linux is apparently “crippled by the old guard of C developers reluctant to adopt new tech”, to which GP replied in agreement in fact. Another one, maintainers don’t want to “do the hard work”.

                                                                                                                        Still, in GP’s case the Chinese whispers have reduced “the safety of this API is hard to formalize and you pretty much have to use it the way everybody does it” to “absurdly low quality”. To which I ask, what is more likely. 1) That 30-million lines of code contain various levels of technical debt of which maintainers are aware; and that said maintainers are worried even of code where the technical debt is real but not causing substantial issue in practice? Or 2) that a piece of software gets to run on literally billions of devices of all sizes and prices just because it’s free and in spite of its “absurdly low quality”?

                                                                                                                        Linux is not perfect, neither technically nor socially. But it sure takes a lot of entitlement and self-righteousness to declare it “of absurdly low quality” with a straight face.

                                                                                                                        1. 11

                                                                                                                          GP here: I probably should have said “shockingly” rather than “absurdly”. I didn’t really expect to get lawyered over that one word, but yeah, the idea was that for a software that runs on billions of devices, the code quality is shockingly low.

                                                                                                                          Of course, this is plainly subjective. If your code quality standards are a lot lower than mine then you might disagree with my assessment.

                                                                                                                          That said, I suspect adoption is a poor proxy for code quality. Internet Explorer was widely adopted and yet it’s broadly understood to have been poorly written.

                                                                                                                          But it sure takes a lot of entitlement and self-righteousness to declare it “of absurdly low quality” with a straight face

                                                                                                                          I’m sure self-righteousness could get you to the same place, but in my case I arrived by way of experience. You can relax, I wasn’t attacking Linux—I like Linux—it just has a lot of opportunity for improvement.

                                                                                                                          1. 5

                                                                                                                            I guess I’ve seen the internals of too much proprietary software now to be shocked by anything about Linux per se. I might even argue that the quality of Linux is surprisingly good, considering its origins and development model.

                                                                                                                            I think I’d lawyer you a tiny bit differently: some of the bugs in the kernel shock me when I consider how many devices run that code and fulfill their purposes despite those bugs.

                                                                                                                            1. 7

                                                                                                                              FWIW, I was not making a dig at open source software, and yes plenty of corporate software is worse. I guess my expectations for Linux are higher because of how often it is touted as exemplary in some form or another. I don’t even dislike Linux, I think it’s the best thing out there for a huge swath of use cases—I just see some pretty big opportunities for improvement.

                                                                                                                          2. 4

                                                                                                                            But it sure takes a lot of entitlement and self-righteousness to declare it “of absurdly low quality” with a straight face.

                                                                                                                            Or actual benchmarks: the performance the Linux kernel leaves on the table in some cases is absurd. And sure it’s just one example, but I wouldn’t be surprised if it was representative of a good portion of the kernel.

                                                                                                                            1. 3

                                                                                                                              absurdly low quality

                                                                                                                              Well not quite but still “considered broken beyond repair by many people related to life time management” - which is definitely worse than “hard to formalize” when “the way ever[y]body does it” seems to vary between each user.

                                                                                                                              1. 4

                                                                                                                                I love Rust but still, we’re talking of a language which (for good reasons!) considers doubly linked lists unsafe. Take an API that gets a 4 on Rusty Russell’s API design scale (“Follow common convention and you’ll get it right”), but which was designed for a completely different programming language if not paradigm, and it’s not surprising that it can’t easily be transformed into a 9 (“The compiler/linker won’t let you get it wrong”). But at the same time there are a dozen ways in which, according to the same scale, things could actually be worse!

                                                                                                                                What I dislike is that people are seeing “awareness of complexity” and the message they spread is “absurdly low quality”.

                                                                                                                                1. 13

                                                                                                                                  Note that doubly linked lists are not a special case at all in Rust. All the other common data structures like Vec, HashMap etc. also need unsafe code in their implementation.

                                                                                                                                  Implementing these datastructures in Rust, and writing unsafe code in general, is indeed roughly a 4. But these are all already implemented in the standard library, with an API that actually is at a 9. And std::collections::LinkedList is constructive proof that you can have a safe Rust abstraction for doubly linked lists.

                                                                                                                                  Yes, the implementation could have bugs, thus making the abstraction leaky. But that’s the case for literally everything, down to the hardware that your code runs on.

                                                                                                                                  1. 4

                                                                                                                                    You’re absolutely right that you can build abstractions with enough effort.

                                                                                                                                    My point is that if a doubly linked list is (again, for good reasons) hard to make into a 9, a 20-year-old API may very well be even harder. In fact, std::collections::LinkedList is safe but still not great (for example the cursor API is still unstable); and being in std, it was designed/reviewed by some of the most knowledgeable Rust developers, sort of by definition. That’s the conundrum that maintainers face and, if they realize that, it’s a good thing. I would be scared if maintainers handwaved that away.

                                                                                                                                    Yes, the implementation could have bugs, thus making the abstraction leaky.

                                                                                                                                    Bugs happen, but if the abstraction is downright wrong then that’s something I wouldn’t underestimate. A lot of the appeal of Rust in Linux lies exactly in documenting/formalizing these unwritten rules, and wrong documentation can be worse than no documentation (cue the negative parts of the API design scale!); even more so if your documentation is a formal model like a set of Rust types and functions.

                                                                                                                                    That said, the same thing can happen in a Rust-first kernel, which will also have a lot of unsafe code. And it would be much harder to fix it in a Rust-first kernel, than in Linux at a time when it’s just feeling the waters.

                                                                                                                                    1. 7

                                                                                                                                      In fact, std::collections::LinkedList is safe but still not great (for example the cursor API is still unstable); and being in std, it was designed/reviewed by some of the most knowledgeable Rust developers, sort of by definition.

                                                                                                                                      At the same time, it was included almost as like, half a joke, and nobody uses it, so there’s not a lot of pressure to actually finish off the cursor API.

                                                                                                                                      It’s also not the kind of linked list the kernel would use, as they’d want an intrusive one.

                                                                                                                                  2. 12

                                                                                                                                    And yet, safe to use doubly linked lists written in Rust exist. That the implementation needs unsafe is not a real problem. That’s how we should look at wrapping C code in safe Rust abstractions.

                                                                                                                                    1. 3

                                                                                                                                      The whole comment you replied to, after the one sentence about linked lists, is about abstractions. And abstractions are rarely going to be easy, and sometimes could be hardly possible.

                                                                                                                                      That’s just a fact. Confusing this fact for something as hyperbolic as “absurdly low quality” is stunning example of the Dunning Kruger effect, and frankly insulting as well.

                                                                                                                                      1. 9

                                                                                                                                        I personally would call Linux low quality because many parts of it are buggy as sin. My GPU stops working properly literally every other time I upgrade Linux.

                                                                                                                                        No one is saying that Linux is low quality because it’s hard or impossible to abstract some subsystems in Rust, they’re saying it’s low quality because a lot of it barely works! I would say that your “Chinese whispers” misrepresents the situation and what people here are actually saying. “the safety of this API is hard to formalize and you pretty much have to use it the way everybody does it” doesn’t apply if no one can tell you how to use an API, and everyone does it differently.

                                                                                                                                        1. 3

                                                                                                                                          I agree, Linux is the worst of all kernels.

                                                                                                                                          Except for all the others.

                                                                                                                                          1. 9

                                                                                                                                            Actually, the NT kernel of all things seems to have a pretty good reputation, and I wouldn’t dismiss the BSD kernels out of hand. I don’t know which kernel is better, but it seems you do. If you could explain how you came to this conclusion that would be most helpful.

                                                                                                                                            1. 10

                                                                                                                                              NT gets a bad rap because of the OS on top of it, not because it’s actually bad. NT itself is a very well-designed kernel.

                                                                                                                                              1. 3

                                                                                                                                                *nod* I haven’t been a Windows person since shortly after the release of Windows XP (i.e. the first online activation DRM’d Windows) but, whenever I see glimpses of what’s going on inside the NT kernel in places like Project Zero: The Definitive Guide on Win32 to NT Path Conversion, it really makes me want to know more.

                                                                                                                        2. -1

                                                                                                                          how low quality the Linux kernel code is

                                                                                                                          Somewhere else it was mentioned that most developers in the kernel could just not be bothered with checking for basic things.

                                                                                                                          how much burnout and misery is involved

                                                                                                                          Nobody is forcing any of these people to do this.

                                                                                                                        3. 14

                                                                                                                          With respect to energy usage: I would be very surprised if running a prompt through Claude or ChatGPT is a less efficient use of energy than running a prompt on my laptop using one of the many excellent local models that work today.

                                                                                                                          My laptop has one user - me. The servers that run Claude and ChatGPT consume a lot more energy than my laptop, but they each serve 1000s or more people.

                                                                                                                          It feels likely to me that sharing a server between 1000s of people is less energy intensive than having a single M2 MacBook Pro that is working just for myself.

                                                                                                                          As always though I find it deeply frustrating that I don’t have a confident answer to even this very basic question. I think LLM vendors would benefit enormously from publishing detailed energy usage figures at this point, because the common consensus is settling around them being enormously wasteful in terms of energy.

                                                                                                                          1. 9

                                                                                                                            Your environmental impact is going to be roughly proportional to how much money you spend. It’s almost certainly a rounding error compared to flying, running a car, living in a house, eating meat, etc.

                                                                                                                            1. 10

                                                                                                                              You’re ignoring the cross subsidies on these things. Big tech companies are burning money to train these and even OpenAI posted a multi-billion-dollar loss last year (and that’s including all of the exciting accounting that swaps capex and opex in ways that make Amy Hood happy at Microsoft).

                                                                                                                              The environmental impact is going to be roughly proportional to how much money someone spends, but for a lot of ‘AI’ things, the amount that you’re paying is a trivial fraction of the total.

                                                                                                                            2. 3

                                                                                                                              As always though I find it deeply frustrating that I don’t have a confident answer to even this very basic question.

                                                                                                                              Which question? If it’s environmental impact, it’s not a basic question at all. Environmental impact is extremely complex. “Wasteful” is also a value judgment, so I don’t think the numbers will help a ton tbh, and people are terrible at determining if a value is high or low once the numbers are big. My PS5 has a big GPU in it, I play on it purely for entertainment purposes - is that wasteful? I genuinely think anyone is capable of making an argument that it is or isn’t pretty easily.

                                                                                                                              1. 1

                                                                                                                                Which question?

                                                                                                                                The question “which uses more electricity: running a prompt through Llama 70B on my laptop or running that same prompt through Claude 3.5 Sonnet”.

                                                                                                                                1. 1

                                                                                                                                  Ah, I see. Re-reading your post, that’s clear :)

                                                                                                                              2. 2

                                                                                                                                The TL;DR here is that you’re right; but you can work backwards from this by looking at the open-source inference provider pricing, like Fireworks. The $/1MM tokens for a saturated GPU running Mixtral 8x7b is $0.23, assuming a list price of $7.79/hr/GPU (the extremely marked-up price of an H100 rented through Fireworks, using their custom inference stack). This implies you can serve ~34MM tokens/hour/GPU using the Fireworks inference stack.

                                                                                                                                A fast MLX implementation for a much smaller LLM (Phi-3-Mini) gets 370 tok/s on an M3 Max. That’s equivalent to ~1MM tokens/hour (on a much easier-to-run LLM, so this is pretty conservative).

                                                                                                                                An H100 draws 700W, and an M3 Max draws 56W. Given that the H100 is serving ~34x more tokens, using only 12.5x more power, for a larger model, even assuming you were getting max utilization for your personal LLM usage an H100 is actually nearly 3x more power-efficient than running the models on an M3 Max, conservatively.

                                                                                                                                Since you’re most likely not getting maximum efficiency from your M3 Max, since you aren’t batching hundreds of requests together, the efficiency is even worse for local models.

                                                                                                                                In general: if it was more efficient to serve the models off of Apple chips, everyone in the industry would be buying Apple hardware and running bespoke inference stacks on top of racked macOS machines. They’re not: Nvidia is much more efficient at scale. That’s why everyone buys Nvidia.

                                                                                                                              3. 1

                                                                                                                                Mostly domestic stuff. I will see if I can knock out a few more operators on my PostScript interpreter.

                                                                                                                                Also catching up on the latest episode of Severance.

                                                                                                                                1. 3

                                                                                                                                  I always find it remarkable how deep you can go on such simple concepts like this.

                                                                                                                                  1. 2

                                                                                                                                    It’s really grating to have to express the thing in terms of not-something.

                                                                                                                                    A variation of this I’ve run into numerous times is how to refer to a shopping basket that has items in it. notEmpty is descriptive enough, but a single word would be nice. ‘Full’ is the opposite of ‘empty’ but that has a different meaning. We want the inverse, not the opposite, and such a word doesn’t exist.

                                                                                                                                    1. 7

                                                                                                                                      Empty / Laden / Full

                                                                                                                                      (Maybe “loaded” is less obscure, but to me “loaded” suggests that loading has finished in a way that “laden” does not.)

                                                                                                                                      1. 10

                                                                                                                                        +1 to this type. It is flexible enough to help in many contexts, ex.

                                                                                                                                        data Fullness = Empty | Laden | Full
                                                                                                                                        data SwallowGeography = European | African
                                                                                                                                        
                                                                                                                                        airspeed :: Fullness -> SwallowGeography -> Double
                                                                                                                                        
                                                                                                                                        1. 6

                                                                                                                                          Even better, we could rename Empty to Unladen for better consistency!

                                                                                                                                        2. 7

                                                                                                                                          At my last job we were designing something with an intermediate state between “open” and “closed”, and ended up going with “ajar”. It looked ridiculous at first but after a while I got used to it.

                                                                                                                                          1. 4

                                                                                                                                            Haha, I really like this. Reminds me of ‘blur’ UI events – it’s a fairly liberal application of the word but the meaning is easily deduced.

                                                                                                                                          2. 2

                                                                                                                                            These are some of the best suggestions I’ve heard so far!

                                                                                                                                            I think laden suffers a similar problem to loaded; it has a connotation of being close to full.

                                                                                                                                          3. 4

                                                                                                                                            I feel like sometimes as programmers our desire to have snappy one word names for things causes more problems than it’s worth. Like, it can be taken too far the other direction (looking at you EnterpriseGradeFizzBuzzSolutionStrategyFactory) but I’m always more than happy with a

                                                                                                                                            data CartStatus a = Empty | WithItems [a]
                                                                                                                                            
                                                                                                                                            doSomethingWithCart status = case status of
                                                                                                                                                Empty -> "Something to do w/ empty cart"
                                                                                                                                                WithItems items -> "Something to do w/ cart with items" ++ show items
                                                                                                                                            
                                                                                                                                          4. 13

                                                                                                                                            What is the tl;dr on this issue? It sounds like the litigators want to load their own software on Apple hardware and use legislation to force that?

                                                                                                                                            Sounds bogus to me. There’s a gazillion hardware platforms. Pick an android device. Pick any of a thousand laptop brands.

                                                                                                                                            It does sound like the EU is going after Apple for populist + cash machine reasons.

                                                                                                                                            1. 44

                                                                                                                                              Sounds bogus to me. There’s a gazillion hardware platforms. Pick an android device. Pick any of a thousand laptop brands.

                                                                                                                                              There’s no good reason to allow any locked platform that doesn’t allow users to re-purpose them by running their own software. Doesn’t matter if there are other options. I’m not sure if it’s hubris or greed from Apple, but it doesn’t serve the public, and that practice deserves to get shut down.

                                                                                                                                              1. 32

                                                                                                                                                It also sets a dangerous precedent, which other companies may follow. Given enough of such locked down vendors, overall software freedom would erode enough to become a real problem. So even if now there’s the excuse that there are plenty of “more open” alternatives, it’s still fundamentally unacceptable IMO.

                                                                                                                                                Besides, it’s not like there’s a huge amount of choice on mobile…

                                                                                                                                                1. 15

                                                                                                                                                  I disagree with the notion of “There’s no good reason to allow…” That’s not the way the law should work in a free society. Things should be allowed unless there are good reasons to forbid them. I’m not a libertarian; but modern democratic thought, from the Declaration of Independence through the UN Charter on Human Rights, starts with people’s rights.

                                                                                                                                                  If I want to sell you a machine with a black box inside it that’s welded shut, that’s my right. You are welcome to try to hacksaw your black box, of course, or to buy a competing device that’s not locked.

                                                                                                                                                  1. 38

                                                                                                                                                    You are welcome to try to hacksaw your black box, of course

                                                                                                                                                    In most of the world, that’s not true. In fact most of the world forbids you from even trying to look inside the black box other than for specific purposes. The law is already heavily imbalanced in favor of the black box manufacturers.

                                                                                                                                                    See 17 USC §1201, or 2001/29/EC Art. 6 for those I’m aware of.

                                                                                                                                                    1. 15

                                                                                                                                                      The reality is capitalism doesn’t work this way. Modern history suggests that pretty much the first thing capital does when operating in truly unfettered markets is to try to form monopolies, or at the very least cartels. The US discovered this the hard way which is how they ended up passing the quintessential modern “anti-trust” legislation - which of course the neoliberals have spent the last 40-odd years trying to dilute.

                                                                                                                                                      1. 4

                                                                                                                                                        I don’t believe in “truly unfettered markets”, and they don’t exist anywhere; that’s a straw man. Nor is there a monopoly/cartel here: Apple has strong competitors in Google, Samsung, Microsoft, etc., none of whom have control over the phone or OS market. Apple doesn’t even have 50% market share. Things are a lot better than in the mid-90s when Microsoft was in a monopolistic position.

                                                                                                                                                      2. 13

                                                                                                                                                        If I want to sell you a machine with a black box inside it that’s welded shut, that’s my right. You are welcome to try to hacksaw your black box, of course, or to buy a competing device that’s not locked.

                                                                                                                                                        I agree, and so does the DMA. That’s why it only kicks in for companies that have achieved a certain level of market dominance that allows them sell things that are not what the customers want, but which the customers must buy because of other features. The Android / iOS duopoly is so entrenched that Microsoft was not able to successfully enter the market with a competing product. If you look at the main iOS or Android stores, there are so many apps that there’s a huge lock-in effect. Even switching from iOS to Android or vice versa is often hard because there’s often at least one app that doesn’t have a direct equivalent (and a lot more that require you to buy them again for the other platform).

                                                                                                                                                        1. 9

                                                                                                                                                          Things should be allowed unless there are good reasons to forbid them.

                                                                                                                                                          Tautology detected.

                                                                                                                                                          I disagree with the notion of “There’s no good reason to allow…” That’s not the way the law should work in a free society. Things should be allowed unless there are good reasons to forbid them. I’m not a libertarian; but modern democratic thought, from the Declaration of Independence through the UN Charter on Human Rights, starts with people’s rights.

                                                                                                                                                          You have to be very selective in your reading to think that the concept of “people’s rights” applies to huge economic structures with the power to shape society.

                                                                                                                                                          1. 3

                                                                                                                                                            Things should be allowed unless there are good reasons to forbid them.

                                                                                                                                                            Tautology detected.

                                                                                                                                                            How’s that a tautology?

                                                                                                                                                            All it means is that things should be allowed by default (i.e. not denied by default).

                                                                                                                                                            Can you point out where the repetition is (in the original phrasing)?

                                                                                                                                                            1. 1

                                                                                                                                                              Can you point out where the repetition is (in the original phrasing)?

                                                                                                                                                              You are begging the question that there is repetition in the original phrasing; nobody said there was.

                                                                                                                                                                1. 1

                                                                                                                                                                  A statement that is true by the definition of its terms and thus adds nothing to the discussion.

                                                                                                                                                                  1. 2

                                                                                                                                                                    Right, which is essentially a form of repetition. Not necessarily word for word, but that wasn’t what I meant.

                                                                                                                                                                    Tautologies add nothing to the discussion because they restate what was already part of the discussion, implied or explicit.

                                                                                                                                                                    It’s like saying “all triangles have 3 sides”; well, yeah, “triangle” already means “3-sided”, so the sentence is equivalent to saying, “all 3-sided [objects] have 3 sides”.

                                                                                                                                                                    I’m really not seeing how that’s the case in the original comment under discussion:

                                                                                                                                                                    Things should be allowed unless there are good reasons to forbid them.

                                                                                                                                                                    If you wanted to tweak it to be tautological, it’d be something like:

                                                                                                                                                                    Things should be allowed unless they shouldn’t be allowed.

                                                                                                                                                                    “There are good reasons to forbid them” is not equivalent to “they should be forbidden”, because when looking at whether we “should” do something, we don’t only look at whether there are good reasons to do so, we also consider if there are any good reasons not to do so and make a decision by weighing up the pros and cons.

                                                                                                                                                                    When you consider his point charitably, it’s clear he’s saying, “if there are no good reasons to forbid something and there are no good reasons to allow it, we should default to allowing it”.

                                                                                                                                                                    Ironically, his statement may have been more obviously not tautological if he’d restated it by contrasting it with its opposite, like so: “things should be allowed unless there are good reasons to forbid them [rather than being forbidden unless there are good reasons to allow them]” — thus making it obvious that his point was, as I said, “things should be allowed by default”.

                                                                                                                                                                    1. 1

                                                                                                                                                                      Right, which is essentially a form of repetition. Not necessarily word for word, but that wasn’t what I meant.

                                                                                                                                                                      so repetition, but not necessarily “in the original phrasing.”

                                                                                                                                                                      When you consider his point charitably, it’s clear he’s saying, “if there are no good reasons to forbid something and there are no good reasons to allow it, we should default to allowing it”.

                                                                                                                                                                      but then the statement itself is a good reason to allow the thing, so the antecedent can never be true and the statement is vacuous.

                                                                                                                                                                      1. 1

                                                                                                                                                                        but then the statement itself is a good reason to allow the thing, so the antecedent can never be true and the statement is vacuous.

                                                                                                                                                                        At this point, I think you’re being way too literal, which is not how human language works.

                                                                                                                                                                        Yes, if you want to rephrase his point as, “there being no good reasons to forbid something is itself a good reason to allow it”, which is again, just another way of saying, “things should be allowed by default”, then feel free to do that.

                                                                                                                                                                        You clearly understand his point.


                                                                                                                                                                        But let me play the literal game with you for a bit. The statement, “things should be allowed unless there are good reasons to forbid them” can be interpreted, even literally as, “things [in general] should be allowed unless there are good reasons to ban them [in particular]”.

                                                                                                                                                                        In other words, equivocate on “things” (which we refer to as “them” in the second usage).

                                                                                                                                                                        Sure, for any given class of things you try to evaluate this rule on, it’ll reduce to, “X’s should be allowed unless there are good reasons to ban X’s”, but as my dictionary claims in its sample sentence for “tautology” anyway, “all logical propositions are reducible to either tautologies or contradictions”.

                                                                                                                                                                        Sounds good to me!

                                                                                                                                                                        1. 1

                                                                                                                                                                          You clearly understand his point.

                                                                                                                                                                          I understand it to be a truism. I don’t know what “by default” could mean in this context.

                                                                                                                                                                          But let me play the literal game with you for a bit.

                                                                                                                                                                          happy to play along but I didn’t follow this part.

                                                                                                                                                                          1. 1

                                                                                                                                                                            I explain with some code analogies below, but I want to correct my previous statement that his rule is equivalent to:

                                                                                                                                                                            if there are no good reasons to forbid something and there are no good reasons to allow it, we should default to allowing it

                                                                                                                                                                            In reality, it’s more like:

                                                                                                                                                                            if there are no good reasons to forbid something, even without any good reasons to allow it, we should default to allowing it

                                                                                                                                                                            I also noticed you didn’t explicitly address this part of my previous comment:

                                                                                                                                                                            I’m really not seeing how that’s the case in the original comment under discussion:

                                                                                                                                                                            Things should be allowed unless there are good reasons to forbid them.

                                                                                                                                                                            If you wanted to tweak it to be tautological, it’d be something like:

                                                                                                                                                                            Things should be allowed unless they shouldn’t be allowed.

                                                                                                                                                                            “There are good reasons to forbid them” is not equivalent to “they should be forbidden”, because when looking at whether we “should” do something, we don’t only look at whether there are good reasons to do so, we also consider if there are any good reasons not to do so and make a decision by weighing up the pros and cons.

                                                                                                                                                                            Can you explain how “there are good reasons to forbid them” is equivalent to “they should be forbidden”, given that we also have to consider whether the reasons to allow them outweigh the reasons to forbid them before we can say they should be forbidden?


                                                                                                                                                                            I understand it to be a truism. I don’t know what “by default” could mean in this context.

                                                                                                                                                                            Let me try to explain it another way then. Imagine you’re writing a command for a CLI. Something like:

                                                                                                                                                                            x abc --def .
                                                                                                                                                                            

                                                                                                                                                                            You have a configurable behaviour that’s set by a config file in /etc, or a config file in ~ if that’s not there, or an environment variable $GHI if that’s not there, or a command line argument --ghi <value> if that’s not there.

                                                                                                                                                                            You can describe this as “if there’s no configured value in a good location, then default to X”. What you’re doing is the equivalent of saying, “but there is a configured value, the developers have configured the default” (defaulting to X — instead of erroring from a missing value, for example — is itself a configuration).

                                                                                                                                                                            I mean, sure, you can say that, but it’s only a tautology if you force it to be one, since there’s a perfectly reasonable way of interpreting it a non-tautological way, which is by interpreting “a configured value” to simply not include the configuration given by the developers, even though literally speaking, it’s also configuration.

                                                                                                                                                                            You could probably analogise other base cases in a recursive function. The statement “things should be allowed unless there are good reasons to forbid them” can be codified as the following recursive algorithm,

                                                                                                                                                                            which is also an algorithmification of what I was getting at with my restatement of, “if there are no good reasons to forbid something, even without any good reasons to allow it, we should default to allowing it”:

                                                                                                                                                                            allow
                                                                                                                                                                              :: [ReasonToAllow Subject]
                                                                                                                                                                              -> [ReasonToForbid Subject]
                                                                                                                                                                              -> Subject
                                                                                                                                                                              -> Bool
                                                                                                                                                                            allow _ [] x = True -- X should be allowed…
                                                                                                                                                                            allow reasonsToAllow (reasonToForbid : reasonsToForbid) x =
                                                                                                                                                                              -- …unless there are good reasons to forbid X
                                                                                                                                                                              if reasonToForbid `isAGoodReasonToForbid` x
                                                                                                                                                                              then
                                                                                                                                                                                if none isAGoodReasonToAllow reasonsToAllow
                                                                                                                                                                                then False -- forbid
                                                                                                                                                                                else weighUp reasonsToAllow (reasonToForbid : reasonsToForbid) x
                                                                                                                                                                              else allow reasonsToAllow reasonsToForbid x -- recurse
                                                                                                                                                                            

                                                                                                                                                                            You can say that mere lack of good reasons to forbid it is itself good reason to allow it, but when I say, “[even without any] good reasons to allow it”, I don’t mean whatever good reasons the developer has for defaulting to allowing, I mean whatever reasons are being provided as input to the function that are reified as ReasonToAllow; essentially we don’t count the reasons we default to allowing as “reasons [proper] to allow X”.

                                                                                                                                                                            Another way to phrase it in the allow function analogy is, “don’t require that the user provide good reasons to allow a thing if there are none to forbid it”.

                                                                                                                                                                            I mean, just go back to the context of the original comment:

                                                                                                                                                                            A commenter says, “There’s no good reason to allow any locked platform that doesn’t allow users to re-purpose them by running their own software”, and the comment under discussion responds, “I disagree with the notion of “There’s no good reason to allow…” That’s not the way the law should work in a free society. Things should be allowed unless there are good reasons to forbid them.”

                                                                                                                                                                            He’s simply expressing a philosophical point that rather than things being legal because the law allows them, things are illegal because the law forbids them, and that’s how it should be (in a free society).

                                                                                                                                                                            Anything that a legal system doesn’t explicitly forbid (with laws) or allow is implicitly allowed by a catch-all law that allows things by default (whether it’s written anywhere or not).

                                                                                                                                                                            I honestly don’t get what’s so difficult to understand about that or how it’s tautological.

                                                                                                                                                                            1. 1

                                                                                                                                                                              Can you explain how “there are good reasons to forbid them” is equivalent to “they should be forbidden”, given that we also have to consider whether the reasons to allow them outweigh the reasons to forbid them before we can say they should be forbidden?

                                                                                                                                                                              I don’t think they are necessarily equivalent, but I think the “unless” is confusing things.

                                                                                                                                                                              here is a rough derivation:

                                                                                                                                                                              things should be allowed unless there are good reasons to forbid them
                                                                                                                                                                              X should be allowed unless there are good reasons to forbid X
                                                                                                                                                                              if not (there are good reasons to forbid X) then (X should be allowed)
                                                                                                                                                                              if there are no good reasons to forbid X, then X should not be forbidden
                                                                                                                                                                              if there are no good reasons to forbid something, then it should not be forbidden.

                                                                                                                                                                              wouldn’t you agree that the last statement is a truism or a tautology? if you take issue with any of the steps, refer to your statement that “you’re being way too literal, which is not how human language works.”

                                                                                                                                                                              Let me try to explain it another way then.

                                                                                                                                                                              I almost included “the world is not a .vimrc file” at the end of my last comment because obviously I know what a default is in that context. I’m sorry that you wrote all that but analogizing to a software system doesn’t help me understand what being or allowed or forbidden “by default” would mean in the context of a company trying to do something in the real world. has the default case ever been reached? has it ever not been reached?

                                                                                                                                                                              He’s simply expressing a philosophical point that rather than things being legal because the law allows them, things are illegal because the law forbids them, and that’s how it should be (in a free society).

                                                                                                                                                                              Anything that a legal system doesn’t explicitly forbid (with laws) or allow is implicitly allowed by a catch-all law that allows things by default (whether it’s written anywhere or not).

                                                                                                                                                                              I don’t think either comment was specifically referring to the law, but this is true even in totalitarian societies. no legal system attempts to enumerate everything that is allowed.

                                                                                                                                                                              1. 1

                                                                                                                                                                                here is a rough derivation:

                                                                                                                                                                                things should be allowed unless there are good reasons to forbid them X should be allowed unless there are good reasons to forbid X if not (there are good reasons to forbid X) then (X should be allowed) if there are no good reasons to forbid X, then X should not be forbidden if there are no good reasons to forbid something, then it should not be forbidden.

                                                                                                                                                                                My original comment with the code sample was even longer at first, and I actually ripped this segment out:

                                                                                                                                                                                Initially, I thought you were interpreting his statement that,

                                                                                                                                                                                Things should be allowed unless there are good reasons to forbid them.

                                                                                                                                                                                as equivalent to,

                                                                                                                                                                                Things should be allowed unless they shouldn’t be allowed.

                                                                                                                                                                                but are you interpreting it as,

                                                                                                                                                                                Things shouldn’t be forbidden unless there are good reasons to forbid them.

                                                                                                                                                                                So it looks like I’m on the right track.

                                                                                                                                                                                wouldn’t you agree that the last statement is a truism or a tautology?

                                                                                                                                                                                A truism, yes, a tautology, no.

                                                                                                                                                                                […] but this is true even in totalitarian societies. no legal system attempts to enumerate everything that is allowed.

                                                                                                                                                                                Sure, sure, but the original commenter was making a point that it definitely shouldn’t be this way in a free society. I don’t disagree that even totalitarian systems don’t attempt to enumerate what’s allowed instead of enumerating what’s disallowed.

                                                                                                                                                                                analogizing to a software system doesn’t help me understand what being or allowed or forbidden “by default” would mean in the context of a company trying to do something in the real world. has the default case ever been reached? has it ever not been reached?

                                                                                                                                                                                […]

                                                                                                                                                                                I don’t think either comment was specifically referring to the law,

                                                                                                                                                                                No, the context is not merely a company trying to do something in the real world. It’s a discussion on whether the EU should force Apple to open up its iOS app store.

                                                                                                                                                                                Yes, in law, the default case gets reached all the time, and non-default cases get reached all the time. (If you’re gonna read that overly literal, too, I should clarify that by, “all the time”, I don’t mean that all cases reach both the default and non-default handlers, I mean that at any given point in time, there’s people doing things that the law implicitly allows (the default) and also people doing things that the law does not allow (non-default).)

                                                                                                                                                                                Within that context (of the discussion on whether the EU should force Apple to open up its iOS app store), a commenter says:

                                                                                                                                                                                There’s no good reason to allow any locked platform that doesn’t allow users to re-purpose them by running their own software.

                                                                                                                                                                                The implication one can pick up from that, whether they intended it to be read that way or not, is a “therefore, the EU should forbid Apple from selling its locked down platform [within its jurisdiction]”.

                                                                                                                                                                                Our original commenter is responding to that and saying:

                                                                                                                                                                                I disagree with the notion of “There’s no good reason to allow…” That’s not the way the law should work in a free society. Things should be allowed unless there are good reasons to forbid them.

                                                                                                                                                                                In other words: no, you can’t just imply “it should be prohibited because there’s no good reason to allow it”. The first commenter is implying a rule of, “things should be forbidden unless there are good reasons to allow them”, and our original commenter is responding, no, “things should be allowed unless there good reasons to forbid them”, which is an oppositional axiom.

                                                                                                                                                                                You can say the latter is a truism (in the sense that it’s axiomatic, not tautological), but it still has to be said when the first commenter’s statement is adopting the opposite axiom as a premise. Sometimes, things that seem obvious have to be restated.

                                                                                                                                                                                The point is just that it’s not on anyone to provide a good reason why Apple should be allowed to sell their locked down platform.

                                                                                                                                                                                The first burden is on those wanting to prohibit it to provide a justification for why it should be prohibited, and if they can’t give any, then it should just be permitted by default for whatever good reasons we default to permitting things, regardless of whether anyone can provide the EU a good reason to specifically permit this thing (that are separate from those good reasons we’ve adopted permitting as the default).

                                                                                                                                                                                Sure, I understand that there are many reasons people will give that will be the background of the discussion, but the statement, “there’s no good reason to allow […], therefore we should forbid it” should never even enter as part of the discussion.

                                                                                                                                                                                If you do bring that in, know that you’re challenging the axiom that things should be permitted by default, in which case you can’t just dump it in a conversation as if it’s already known/accepted/assumed that prohibition is the default.

                                                                                                                                                                                You have to be very selective in your reading to think that the concept of “people’s rights” applies to huge economic structures with the power to shape society.

                                                                                                                                                                                So you definitely understood that the context of the discussion was about law, so I’m still struggling to understand how you didn’t understand the simple point that the commenter was making without turning it into a tautology.

                                                                                                                                                                                1. 2

                                                                                                                                                                                  A truism, yes, a tautology, no.

                                                                                                                                                                                  so you agree that the last statement is a truism, but you apparently don’t agree that the first statement is a truism because the rest of your comment is trying to derive some non-obvious meaning from it. at which step in the derivation would you say it starts being a truism?

                                                                                                                                                                                  for what it’s worth, the current paywalled version of the OED includes this in its definitions of “tautology”: “An argument, explanation, or definition that merely restates in different words the very thing which is to be explained, shown, or defined.”

                                                                                                                                                                                  by the nature of how human language works, and the pointlessness of being “too literal,” I don’t know if it’s useful to keep arguing over the difference between truism and tautology and whether the statement is a good enough match for the definition. I think you understand what I meant.

                                                                                                                                                                                  No, the context is not merely a company trying to do something in the real world. It’s a discussion on whether the EU should force Apple to open up its iOS app store.

                                                                                                                                                                                  I assume you are saying “no” because you disagree that the comments in question extend beyond matters of law. well consider the phrase “that practice deserves to get shut down.” I think extralegal means such as protest, public denunciation, etc. are well within the scope of that idea, at least in the context of the comment.

                                                                                                                                                                                  Yes, in law, the default case gets reached all the time, and non-default cases get reached all the time. (If you’re gonna read that overly literal, too, I should clarify that by, “all the time”, I don’t mean that all cases reach both the default and non-default handlers, I mean that at any given point in time, there’s people doing things that the law implicitly allows (the default) and also people doing things that the law does not allow (non-default).)

                                                                                                                                                                                  so is there ever a case where someone is forbidden from doing something by default?

                                                                                                                                                                                  Within that context (of the discussion on whether the EU should force Apple to open up its iOS app store), a commenter says:

                                                                                                                                                                                  There’s no good reason to allow any locked platform that doesn’t allow users to re-purpose them by running their own software.

                                                                                                                                                                                  The implication one can pick up from that, whether they intended it to be read that way or not, is a “therefore, the EU should forbid Apple from selling its locked down platform [within its jurisdiction]”.

                                                                                                                                                                                  more or less. a more precise reading would be that the EU should allow plaintiffs to sue in such cases! [INFO HAZARD]

                                                                                                                                                                                  Our original commenter is responding to that and saying:

                                                                                                                                                                                  I disagree with the notion of “There’s no good reason to allow…” That’s not the way the law should work in a free society. Things should be allowed unless there are good reasons to forbid them.

                                                                                                                                                                                  In other words: no, you can’t just imply “it should be prohibited because there’s no good reason to allow it”. The first commenter is implying a rule of, “things should be forbidden unless there are good reasons to allow them”, and our original commenter is responding, no, “things should be allowed unless there good reasons to forbid them”, which is an oppositional axiom.

                                                                                                                                                                                  and I think both of those axioms are truisms and tautologies in the everyday sense of the words.

                                                                                                                                                                                  You can say the latter is a truism (in the sense that it’s axiomatic, not tautological), but it still has to be said when the first commenter’s statement is adopting the opposite axiom as a premise. Sometimes, things that seem obvious have to be restated.

                                                                                                                                                                                  sometimes indeed.

                                                                                                                                                                                  The point is just that it’s not on anyone to provide a good reason why Apple should be allowed to sell their locked down platform.

                                                                                                                                                                                  The first burden is on those wanting to prohibit it to provide a justification for why it should be prohibited, and if they can’t give any, then it should just be permitted by default for whatever good reasons we default to permitting things, regardless of whether anyone can provide the EU a good reason to specifically permit this thing (that are separate from those good reasons we’ve adopted permitting as the default).

                                                                                                                                                                                  how about this: “there’s no good reason to allow killing someone just because they trespassed on your property.”

                                                                                                                                                                                  then someone responds: “things should be allowed unless there are good reasons to forbid them.”

                                                                                                                                                                                  do you think the first speaker should be expected to preemptively state their reasons for why killing should be prohibited? are they implying that things should be forbidden unless there are good reasons to allow them?

                                                                                                                                                                                  Sure, I understand that there are many reasons people will give that will be the background of the discussion, but the statement, “there’s no good reason to allow […], therefore we should forbid it” should never even enter as part of the discussion.

                                                                                                                                                                                  so does that apply to the above?

                                                                                                                                                                                  If you do bring that in, know that you’re challenging the axiom that things should be permitted by default, in which case you can’t just dump it in a conversation as if it’s already known/accepted/assumed that prohibition is the default.

                                                                                                                                                                                  so the first speaker in my example is “challenging the axiom that things should be permitted by default”????????

                                                                                                                                                                                  You have to be very selective in your reading to think that the concept of “people’s rights” applies to huge economic structures with the power to shape society.

                                                                                                                                                                                  So you definitely understood that the context of the discussion was about law, so I’m still struggling to understand how you didn’t understand the simple point that the commenter was making without turning it into a tautology.

                                                                                                                                                                                  the literature on people’s rights extends beyond matters of law.

                                                                                                                                                                                  1. 1

                                                                                                                                                                                    A truism, yes, a tautology, no.

                                                                                                                                                                                    so you agree that the last statement is a truism, but you apparently don’t agree that the first statement is a truism

                                                                                                                                                                                    No, I agree that the first statement in the derivation list is also a truism, I don’t agree that it’s a tautology.

                                                                                                                                                                                    I still don’t see the repetition in, “if there are no good reasons to forbid something, then it should not be forbidden”, unless you want to say “should X” is actually identical to, rather than what naturally follows from, “good reason to X”.

                                                                                                                                                                                    But even then, that would make the statement “should not X” identical to “good reason to not X”, rather than identical to “no good reason to X”

                                                                                                                                                                                    So again, I don’t think it was a tautology, I think it was an axiomatic truth that was being implicitly challenged and needed to be made explicit so that the discussion could continue with everyone understanding where they each stand.

                                                                                                                                                                                    Even if the implicit challenge was a misreading, the first commenter could just respond, “I think you misunderstood me, I’m not challenging that axiom”.

                                                                                                                                                                                    because the rest of your comment is trying to derive some non-obvious meaning from it.

                                                                                                                                                                                    I think it’s pretty obvious that the meaning of “things should be allowed unless there are good reasons to forbid them” is “we should permit things by default”.

                                                                                                                                                                                    Just like it’s obvious that when a friend says, “whatever happens happens”, he means, based on the context, “let’s not worry too much about things we can’t control or prepare for”, or “we don’t really have much to lose, let’s just go for it and if we lose our investment, it’s no big deal”, or whatever.

                                                                                                                                                                                    for what it’s worth, the current paywalled version of the OED includes this in its definitions of “tautology”: “An argument, explanation, or definition that merely restates in different words the very thing which is to be explained, shown, or defined.”

                                                                                                                                                                                    No problem with that definition, it’s pretty much what we already agreed on earlier in the discussion. I even gave the example of the three-sided triangle.

                                                                                                                                                                                    by the nature of how human language works, and the pointlessness of being “too literal,” I don’t know if it’s useful to keep arguing over the difference between truism and tautology and whether the statement is a good enough match for the definition. I think you understand what I meant.

                                                                                                                                                                                    I’m happy to skip debating the definition of those two words, you just tell me what you meant by it, because I’m not sure I do understand, still.

                                                                                                                                                                                    If you were using tautology to mean “truism”, then sure, the statement was a tautology, but if you were using it with a definition like this in mind, then no, it wasn’t a tautology (and if you think this definition applies to “truism” as well, then no, it’s not a truism either).

                                                                                                                                                                                    Just let me know which one you meant by it, I’m not interested in debating the definitions of words except to understand a third-party’s usage; between us, I’m happy to use the term tautology to mean axiom if you like.

                                                                                                                                                                                    I assume you are saying “no” because you disagree that the comments in question extend beyond matters of law. well consider the phrase “that practice deserves to get shut down.” I think extralegal means such as protest, public denunciation, etc. are well within the scope of that idea, at least in the context of the comment.

                                                                                                                                                                                    The comment’s immediate context was law, so that’s the safest meaning we can safely glean from it. The parent said:

                                                                                                                                                                                    It sounds like the litigators want to load their own software on Apple hardware and use legislation to force that?

                                                                                                                                                                                    Sounds bogus to me.

                                                                                                                                                                                    The comment quoted the “sounds bogus to me” and his comment was a response to that. In other words, he’s clearly intending his rule of “no good reason to allow it, [so don’t allow it]” to apply in the legal sense and agreeing with the litigators.

                                                                                                                                                                                    He may also intend his opinion to apply extra-legally, or even illegally, but we can’t assume that.

                                                                                                                                                                                    That said, it wouldn’t make much sense that he’s advocating for prohibiting Apple from that action using the full force of the law, but not by boycotting Apple, for example. So I’m happy to extend it to extra-legal means, but he certainly meant it in the legal sense.

                                                                                                                                                                                    I would also say that the rule of allowing others to do as they wish unless there are good reasons to forbid it also applies extra-legally, so the objection still works.

                                                                                                                                                                                    so is there ever a case where someone is forbidden from doing something by default?

                                                                                                                                                                                    In law? Nothing pops to mind.

                                                                                                                                                                                    how about this: “there’s no good reason to allow killing someone just because they trespassed on your property.”

                                                                                                                                                                                    then someone responds: “things should be allowed unless there are good reasons to forbid them.”

                                                                                                                                                                                    do you think the first speaker should be expected to preemptively state their reasons for why killing should be prohibited? are they implying that things should be forbidden unless there are good reasons to allow them?

                                                                                                                                                                                    A charitable interpretation of the first statement there would be, “someone trespassing on your property isn’t a good reason to kill them”.

                                                                                                                                                                                    The good reasons we don’t kill trespassers are the same good reasons we don’t kill people in general.

                                                                                                                                                                                    The disagreement that person would be having is whether there are or aren’t good reasons to kill trespassers in particular (or, put another way, whether trespassing is a good reason, and the reasons it’s a good reason, etc. however far you wanna go).

                                                                                                                                                                                    They’d almost certainly both agree that there are good reasons not to kill in general. So he’s presumably saying, “someone trespassing isn’t a good reason to kill them” to someone who he knows or suspects disagrees, to make explicit where he stands.

                                                                                                                                                                                    If someone said, “there’s no good reason to allow killing someone” full stop, in the context of responding to someone saying “it’s bogus” that someone is being charged for killing — with the obvious context that he’s saying killing people should just be allowed, not that the charged is innocent — I’d say they were doing a severely poor job of arguing that we shouldn’t kill people.

                                                                                                                                                                                    The reason we don’t allow killing people is not because we lack good reason to allow it.

                                                                                                                                                                                    Sure, I understand that there are many reasons people will give that will be the background of the discussion, but the statement, “there’s no good reason to allow […], therefore we should forbid it” should never even enter as part of the discussion.

                                                                                                                                                                                    so does that apply to the above?

                                                                                                                                                                                    Yes.

                                                                                                                                                                                    so the first speaker in my example is “challenging the axiom that things should be permitted by default”????????

                                                                                                                                                                                    See above.

                                                                                                                                                                                    So you definitely understood that the context of the discussion was about law, so I’m still struggling to understand how you didn’t understand the simple point that the commenter was making without turning it into a tautology.

                                                                                                                                                                                    the literature on people’s rights extends beyond matters of law.

                                                                                                                                                                                    Yes, but this conversation was about legal proceedings.

                                                                                                                                                                                    I’m happy to extend it beyond law, because in this instance, I think if he has this stance for law, by greater reason, he’d have it for extra-legal ways of prohibiting something which are generally less severe prohibition.

                                                                                                                                                                                    I only mean to point out that he has this stance even as far as the law; I wanted to make it explicit that his stance includes legal means, not to imply that it excludes extra-legal means.

                                                                                                                                                                                    1. 1

                                                                                                                                                                                      I think it’s fair for me to ask that you clearly and directly answer the question I asked in bold. without that I don’t feel motivated to invest time in crafting a response to all that text. okay?

                                                                                                                                                                                      1. 1

                                                                                                                                                                                        It depends on the context.

                                                                                                                                                                                        If the context is that they’re responding to someone who simply doesn’t agree that killing in the general case should be prohibited, and they’re aware of this (or aware that it’s a reasonable possibility), then I’d say yes, they are implying that things should be forbidden unless there are good reasons to allow them.

                                                                                                                                                                                        My “no” answer is assuming a normal scenario, where the disagreement they’re having is specifically about whether trespassing is a good reason, and the context makes that obvious, because I don’t know anyone who agrees that killing in the general case should be allowed.

                                                                                                                                                                                        Literally speaking, that’s what they’re implying either way, but with some charity in the right context, I can see that it’s unintentional, and what they really mean is, “someone trespassing on your property isn’t a good reason to overturn the established, agreed upon rule against killing them, which we have all sorts of reasons to prohibit”.

                                                                                                                                                                                        Maybe the conversation in a normal scenario goes something like this:

                                                                                                                                                                                        • There’s a news story of a trespasser killed submitted to a link-sharing site.
                                                                                                                                                                                        • Commenters argue about whether the shooter should have been charged.
                                                                                                                                                                                        • It turns into an argument about whether the law should allow shooting trespassers.
                                                                                                                                                                                        • Our commenter says, “there’s no good reason to allow killing someone just because they trespassed on your property”.

                                                                                                                                                                                        Their intention becomes clear because they themselves are bringing up a reason that others might appeal to as an alleged good reason to kill someone, and the action being considered for prohibition is already almost-universally agreed upon to be something that should be prohibited in the general case.

                                                                                                                                                                                        Neither of those considerations apply to this thread.

                                                                                                                                                              1. 1

                                                                                                                                                                Max reply depth reached.

                                                                                                                                                                we made it! continuing from here…

                                                                                                                                                                Literally speaking, that’s what they’re implying either way, but with some charity in the right context, I can see that it’s unintentional, and what they really mean is, “someone trespassing on your property isn’t a good reason to overturn the established, agreed upon rule against killing them, which we have all sorts of reasons to prohibit”.

                                                                                                                                                                and yet you don’t think a reasonable, charitable interpretation of “there’s no good reason to allow any locked platform that doesn’t allow users to re-purpose them by running their own software” could be “we have all sorts of reasons to prohibit such closed platforms and there’s no reason to allow it that outweighs the reasons to prohibit it”?

                                                                                                                                                                instead you think the only reasonable interpretation is one that implies “things should be forbidden by default,” something that has never happened and that you couldn’t even speculate on what being forbidden by default would look like???

                                                                                                                                                                1. 1

                                                                                                                                                                  I could extend that charity now, especially if the original author clarified that’s what they meant.

                                                                                                                                                                  But secondly — yes, secondly, I’ll get to the firstly secondly, in a second — even with that interpretation, it was still relevant to explicitly assert the truism, because if the implication of the first interpretation is that “things should be forbidden by default”, then the implication of the second interpretation is that, “it’s already settled that we agree there are good reasons monopolistic locked platforms shouldn’t be allowed”.

                                                                                                                                                                  Which I hope also addresses your point that:

                                                                                                                                                                  instead you think the only reasonable interpretation is one that implies “things should be forbidden by default,” something that has never happened and that you couldn’t even speculate on what being forbidden by default would look like???

                                                                                                                                                                  Besides the fact that it’s not unusual for people to hold a belief the logical conclusions of which are insane and they’d never agree to, but they don’t see how that is the logical conclusion, and when it is shown to them, they abandon the belief.

                                                                                                                                                                  And firstly, that interpretation doesn’t jump out as even a possibility that we could charitably select above other, less charitable interpretations, given the context of the discussion up to that point.

                                                                                                                                                                  In your example, the comment isn’t “there are no good reasons to allow X”, it’s “there are no good reasons to allow X just because Y”, set in a context where no one argues that X in the general case should be permissible.

                                                                                                                                                                  Two differences, one in the background context, and one in the wording, but it leads the interpreter’s mind elsewhere, and things that might have required reading the commenter’s mind in this thread become things we can assume for charity’s sake in your disanalogous example.

                                                                                                                                                                  In your example, it’s obvious that the discussion rests on the premise that everybody agrees killing should not be permitted in the general case and we have various reasons that people accept this, and trespassing has specifically been brought up, so the point under contention is clearly whether trespassing is a good enough reason to overturn the reasons for not killing someone.

                                                                                                                                                                  In this thread, it’s not obvious at all that people all agree that locked monopolistic platforms, for example, should be permitted or not, so if a commenter says, “there are no good reasons to allow locked monopolistic platforms”, it’s perfectly reasonable to say, “things should be permitted by default”;

                                                                                                                                                                  it’s essentially implying “you tell us why we should prohibit this [so we can debate the merits of your case]; we’re not going to just assume that it’s already been settled that it should be prohibited and we’re talking about hearing good, novel reasons to allow it that outweigh the reasons to prohibit it”.

                                                                                                                                                                  That’s not even the charitable reading of the response to me, it’s the obvious interpretation that jumps out to me. I don’t find your less charitable version an even tenable reading.


                                                                                                                                                                  None of this makes the response a tautology, though. I’m still unclear whether you’re saying it’s a truism or a tautology or both, and what definition of both of these terms you’re using.

                                                                                                                                                                  As I said, I’m happy to just use your definition without debate and tell you whether it’s I think a tautology under a specific definition, but I’ll of course maintain that if you’re using tautology to mean truism or axiom, then you’re wrong and this whole discussion could have been avoided by using the term tautology correctly.

                                                                                                                                                                  (And even if I charitably take your usage to mean “truism”, then it still wouldn’t work because, as I said above, the truism was, in this context, relevant to explicitly assert.)

                                                                                                                                                                  1. 1

                                                                                                                                                                    I understand very little of what you’ve written, and the parts that I understand I completely disagree with.

                                                                                                                                                                    Besides the fact that it’s not unusual for people to hold a belief the logical conclusions of which are insane and they’d never agree to, but they don’t see how that is the logical conclusion, and when it is shown to them, they abandon the belief.

                                                                                                                                                                    then wouldn’t that also apply to the castle doctrine example, if “literally speaking, that’s what they’re implying either way”?

                                                                                                                                                                    if the implication of the first interpretation is that “things should be forbidden by default”, then the implication of the second interpretation is that, “it’s already settled that we agree there are good reasons monopolistic locked platforms shouldn’t be allowed”.

                                                                                                                                                                    you said that it could be interpreted to mean “things should be forbidden by default.” if the second interpretation is “we have all sorts of reasons to prohibit such closed platforms and there’s no reason to allow it that outweighs the reasons to prohibit it,” that does not imply that “it’s already settled that we agree…” – it’s dumbfounding to read this.

                                                                                                                                                                    1. 1

                                                                                                                                                                      then wouldn’t that also apply to the castle doctrine example, if “literally speaking, that’s what they’re implying either way”?

                                                                                                                                                                      As I said, your interpretation doesn’t jump out as even a possibility (to me) that we could charitably select above other, less charitable interpretations, given the context of the discussion up to that point and the exact phrasing.

                                                                                                                                                                      In my castle doctrine example, given the addition of the “just because they’re trespassing”, it’s obvious that the discussion is not about killing in the general case, because I can easily interpret the disagreement as being on reasons to overturn the prohibition of killing in the case of trespassers.

                                                                                                                                                                      In this case, they didn’t say, “there’s no good reason to allow locked platforms just because there are other alternatives”, they said, “there’s no good reason to allow any [their emphasis] locked platform that doesn’t allow users to […]”.

                                                                                                                                                                      The more charitable interpretation just doesn’t pop out at me as easily. And that doesn’t faze me like, “no, surely he couldn’t have meant that”, because I’d probably subconsciously just chalk it down to a brain fart on their part, and they just needed a reminder of the foundational rule.

                                                                                                                                                                      you said that it could be interpreted to mean “things should be forbidden by default.” if the second interpretation is “we have all sorts of reasons to prohibit such closed platforms and there’s no reason to allow it that outweighs the reasons to prohibit it,” that does not imply that “it’s already settled that we agree…” – it’s dumbfounding to read this.

                                                                                                                                                                      I’m saying I can accept that someone could mean “there’s no good reason to allow it” as a shorthand for “there are no good reasons to allow it that outweigh the reasons for prohibiting it”. But they’re responding to a comment that called the whole thing “bogus” because of the diversity of choice,

                                                                                                                                                                      implying that there’s no good reason to prohibit a locked platform at least in this case,

                                                                                                                                                                      yet they completely ignored that to shift the burden onto the other side to bring up good reasons to allow it, as if the burden is on the people who think it should be allowed, which, as far as I can see, would only be the case if either:

                                                                                                                                                                      1. it’s simply a settled matter that there are good reasons to prohibit it that outweigh the reasons for allowing it (at least for this context where there are choices) and the discussion is about overturning it (at least for this context), or
                                                                                                                                                                      2. it’s not settled, so we start from an empty set of agreed-upon reasons for or against either side of whether we should allow or prohibit it, in which case, we can immediately just tack on the agreed-on default-allow reason, putting the burden for arguing their case on the ones who think it should be prohibited.

                                                                                                                                                                      I’m happy to hear a third option, but as far as I can see, either it’s a settled matter and so the burden is on the pro-allowance side, or it’s not a settled matter and the person who responded to that comment to shift the burden back to the pro-prohibition side by pointing out, “things should be allowed unless there are good reasons to forbid them” was completely in the right.

                                                                                                                                                                      You can’t have your cake and eat it. Again, this wouldn’t faze me, I’d chalk it down to a brain fart, which is why the reminder of the basic rule seemed natural to me.


                                                                                                                                                                      At this point, I’ve explained and over-explained why I interpreted things the way I did. If you’re gonna respond that you’re dumbfounded again, I can’t really do anything more — and I’m tired of having to keep asking you about where you stand on the tautology thing and what definition you want to use or anything about that — so let’s just end it here.

                                                                                                                                                                      1. 1

                                                                                                                                                                        The more charitable interpretation just doesn’t pop out at me as easily. And that doesn’t faze me like, “no, surely he couldn’t have meant that”, because I’d probably subconsciously just chalk it down to a brain fart on their part, and they just needed a reminder of the foundational rule.

                                                                                                                                                                        they needed a reminder of the foundational rule which has always applied and could never not apply even hypothetically… okay buddy.

                                                                                                                                                                        If you’re gonna respond that you’re dumbfounded again, I can’t really do anything more — and I’m tired of having to keep asking you about where you stand on the tautology thing and what definition you want to use or anything about that — so let’s just end it here.

                                                                                                                                                                        well if you’re still curious, I think the OED definition I gave is just fine: “An argument, explanation, or definition that merely restates in different words the very thing which is to be explained, shown, or defined.”

                                                                                                                                                                        I thought the original statement was roughly equivalent to “if there are no good reasons to forbid something, then it should not be forbidden.” by the standards of everyday speech, I think “there are no good reasons to forbid X” is a mere restatement of “X should not be forbidden.” In contrast to a mere “reason,” a “good reason” can be understood as one that overrides the reasons for the contrary proposition.

                                                                                                                                                                        best of luck to you.

                                                                                                                                                                        1. 1

                                                                                                                                                                          they needed a reminder of the foundational rule which has always applied and could never not apply even hypothetically… okay buddy.

                                                                                                                                                                          Yeah, that’s what a brain fart is. You can end up saying things that lead to insane conclusions and all you need is a that pointed out to you to realise you messed up in your train of thought somewhere.

                                                                                                                                                                          And if they didn’t mean it that way, then they simply misspoke, and again, it’s useful to clarify the implication of their words so they can rephrase.

                                                                                                                                                                          I think “there are no good reasons to forbid X” is a mere restatement of “X should not be forbidden.” In contrast to a mere “reason,” a “good reason” can be understood as one that overrides the reasons for the contrary proposition.

                                                                                                                                                                          I understood “good reason” as one which isn’t fallacious or based on false premises or otherwise weak. So you can have a good reason that’s still outweighed by better reasons to do the opposite.

                                                                                                                                                                          But let’s take your understanding.

                                                                                                                                                                          Then we can go back to the understanding of the foundational reasons to allow things by default not being part of the set of reasons being referred to in the statement, “if there are no reasons to forbid something that aren’t outweighed by reasons to allow it, then it should be allowed”, so that it can be understood as, “things should be allowed by default”.

                                                                                                                                                                          Such an interpretation would charitably remove the tautology at the cost of implying that the person is themselves being uncharitable to the person they’re responding to, by implying that they don’t know, or at least haven’t considered in their prior statement, that the burden is on them to give reasons to forbid that specific thing.


                                                                                                                                                                          I still think the most charitable way to interpret the whole conversation is like:

                                                                                                                                                                          A: “This is bogus, there’s plenty of competition.” B: “There’s no good reason to allow any locked platforms.” C: “[Why don’t you tell us the reasons to forbid it, since] things should be allowed by default.”

                                                                                                                                                                          If we apply your charity to B, we can even say:

                                                                                                                                                                          A: “This is bogus, there’s plenty of competition.” B: “There’s no good reason to allow any locked platforms.” C: “[Why don’t you tell us the reasons to forbid it, since] things should be allowed by default [and the reasons given for prohibiting locked platforms, like user choice, don’t apply].”

                                                                                                                                                                          A response like, “why don’t you tell us the reasons to forbid it” is susceptible to an objection like, “why are you shifting the burden to the person who asked first for reasons to allow it? are you admitting there’s no good reason to allow it?”;

                                                                                                                                                                          a response like, “the reasons given for prohibiting locked platforms don’t apply here” is susceptible to a response like, “they never gave any reasons”.

                                                                                                                                                                          Given how easy it is to encounter people online who think waaay differently from yourself, you can’t blame them for writing defensively by bringing it back to basics, but you’ll never please everyone, I guess.


                                                                                                                                                                          At the end of this, I understand how you could have reasonably interpreted it as a tautology.

                                                                                                                                                                          I hope you can also understand how I could have reasonably interpreted the comment that was itself responding to as an incorrectly placed burden of ‘proof’ to the point that it needed to be pointed out (which people do in discussion and debate all the time).

                                                                                                                                                                          If we both understand each other, there’s not much reason to keep arguing the point unless you have anything new to add.

                                                                                                                                                                          1. 1

                                                                                                                                                                            And if they didn’t mean it that way, then they simply misspoke, and again, it’s useful to clarify the implication of their words so they can rephrase.

                                                                                                                                                                            useful for what? I think you have to be willfully obtuse to think that they actually meant it in a way that implies the insane conclusion you suggested. if you don’t think that, we can agree to disagree, but really ask yourself if you’re being honest with yourself.

                                                                                                                                                                            so I don’t see the value in “giving them the opportunity to rephrase.” if the goal is to address the topic of conversation, it can only derail, an in this case the derailment came immediately after the tautology in the very same comment.

                                                                                                                                                                            I think “there are no good reasons to forbid X” is a mere restatement of “X should not be forbidden.” In contrast to a mere “reason,” a “good reason” can be understood as one that overrides the reasons for the contrary proposition.

                                                                                                                                                                            I understood “good reason” as one which isn’t fallacious or based on false premises or otherwise weak. So you can have a good reason that’s still outweighed by better reasons to do the opposite.

                                                                                                                                                                            that’s also a fine interpretation. two people can have different interpretations without either being incorrect.

                                                                                                                                                                            A: “This is bogus, there’s plenty of competition.” B: “There’s no good reason to allow any locked platforms.” C: “[Why don’t you tell us the reasons to forbid it, since] things should be allowed by default [and the reasons given for prohibiting locked platforms, like user choice, don’t apply].”

                                                                                                                                                                            I think this interpretation is at least as fair:

                                                                                                                                                                            A: this is bogus, there’s plenty of competition
                                                                                                                                                                            B: why don’t you tell us the reasons to forbid suing on these grounds, since we know the EU parliament decided that the type of competition that exists is not a sufficient reason?

                                                                                                                                                                            etc.

                                                                                                                                                                            I hope you can also understand how I could have reasonably interpreted the comment that was itself responding to as an incorrectly placed burden of ‘proof’ to the point that it needed to be pointed out (which people do in discussion and debate all the time).

                                                                                                                                                                            I agree that there was some rhetorical shifting of the burden of proof on both sides, but there was never agreement on who had the burden of proof to begin with. attempting to rhetorically shift the burden of proof back using a tautology is fair game, but so is pointing out that it’s a tautology. at least the previous comment, not being tautologous, meaningfully advanced the discussion… I consider bringing up a misreading of john locke to be a derailment and not meaningfully adding to the discussion, but maybe that’s just me.

                                                                                                                                                                            nice to see some convergence in a discussion for once.

                                                                                                                                                                            1. 1

                                                                                                                                                                              useful for what?

                                                                                                                                                                              To help them realise they misspoke.

                                                                                                                                                                              I think you have to be willfully obtuse to think that they actually meant it in a way that implies the insane conclusion you suggested. if you don’t think that, we can agree to disagree, but really ask yourself if you’re being honest with yourself.

                                                                                                                                                                              Not really. People shift the burden of proof in obscene ways all the time, it’s an easy trap to fall into if you’re being intellectually lazy, or are even just too lazy to type or express yourself fully on a complex topic, looking for quick, easy putdowns to say to put the matter to bed.

                                                                                                                                                                              I think it’d be insane if I believed they actually believed the implication, but I just don’t find it unusual for people to have beliefs that have extreme implications without noticing it; syllogistic reasoning is hard for most humans.

                                                                                                                                                                              so I don’t see the value in “giving them the opportunity to rephrase.” if the goal is to address the topic of conversation, it can only derail, an in this case the derailment came immediately after the tautology in the very same comment.

                                                                                                                                                                              It’s an opportunity for them to clarify your misunderstanding, giving you the more charitable interpretation that you failed to glean from the original statement.

                                                                                                                                                                              I think you have to be willfully obtuse to think that they actually meant it in a way that implies the insane conclusion you suggested.

                                                                                                                                                                              People routinely say things that have insane implications. I’ve already explained why it doesn’t faze me, but to add some thoughts here:

                                                                                                                                                                              Even if I didn’t believe they meant it that way, how else is someone meant to respond to them shifting the burden of proof onto the opposition by saying, “no good reason to allow this”, except by saying, “hold on, let’s start the conversation from the start, the burden is on you to show why it should be forbidden”?

                                                                                                                                                                              I can say that without believing that they truly mean those words but I make it clear that the only interpretation that’s coming to mind is one where their words imply insane conclusion X, and then they can just clarify.

                                                                                                                                                                              If they’d dug their heels in and explicitly said, “no, things shouldn’t be allowed by default”, then I might start thinking, “what the hell, surely they can’t mean that? I must be misunderstanding”,

                                                                                                                                                                              but before that point, you don’t really consciously question it, you might just think they misspoke, or you misunderstood, or they don’t realise the implication of their shifting of the burden of proof and would backtrack if shown it.

                                                                                                                                                                              You might also assume it was just a moment of intellectual and/or keyboard laziness, and your job is to put up that objection that the burden of proof is on them, so nobody’s sitting there thinking the pro-prohibition arguments are already settled and agreed on.

                                                                                                                                                                              I can understand why someone might be insulted, thinking, “what the hell, do they really think I don’t know that? Do they think I’m literally more extreme than every totalitarian state to ever exist?”, but that’s not necessarily the case. You’re just responding to and/or pointing out the implications of their words from the most charitable interpretation that comes to mind, even if it’s insane, and not really thinking anything of it, expecting that they’ll either realise their mistake or point out yours.

                                                                                                                                                                              This is all happening subconsciously, so you might not even really register how insane your interpretation of their words’ implications (not the words themselves) sounds, but even if you do, as I said, you’d just chalk it down to them not realising the implications due to laziness, misspeaking, or not fully thinking through their belief to its logical conclusion (or you incorrectly attributing an implication that doesn’t exist and they’ll demonstrate your mistake).

                                                                                                                                                                              I think moments like that pass by in many conversations, especially on contentious topics.

                                                                                                                                                                              I think this interpretation is at least as fair:

                                                                                                                                                                              A: this is bogus, there’s plenty of competition
                                                                                                                                                                              B: why don’t you tell us the reasons to forbid suing on these grounds, since we know the EU parliament decided that the type of competition that exists is not a sufficient reason?

                                                                                                                                                                              Ehh, I’d wonder why B didn’t just make their disagreement explicit about the EU parliament deciding that the type of competition that exists is not a sufficient reason, since A seems to be unaware of that.

                                                                                                                                                                              I agree that there was some rhetorical shifting of the burden of proof on both sides, but there was never agreement on who had the burden of proof to begin with. attempting to rhetorically shift the burden of proof back using a tautology is fair game, but so is pointing out that it’s a tautology.

                                                                                                                                                                              Let’s use truism, since we agree that it’s at least a truism under both our initial interpretations, but only a tautology under your interpretation (and even then, I’m a bit iffy on whether it’s a tautology even under that interpretation, but I can see how it can be considered one).

                                                                                                                                                                              I agree with “attempting to rhetorically shift the burden of proof back using a tautology truism is fair game”.

                                                                                                                                                                              Anyway, I don’t deny it’s fair game to point out it’s a tautology if you think so. It’s just also fair game to question why you think it’s a tautology, and you explained, and now I get it :).

                                                                                                                                                                              at least the previous comment, not being tautologous, meaningfully advanced the discussion…

                                                                                                                                                                              Agreeing on truism, not necessarily tautology, I do think reiterating a truism can meaningfully advance the discussion; it’s not about the truism itself, it’s about what’s being implied by bringing it up (in the moment that you do): “let’s go back to the basics of the topic”.

                                                                                                                                                                              I consider bringing up a misreading of john locke to be a derailment and not meaningfully adding to the discussion, but maybe that’s just me.

                                                                                                                                                                              I’m not sure where John Locke comes into this, I’m not versed enough with his works to judge if it’s a misreading, but I thought we both agreed that even the most totalitarian state doesn’t forbid things by default? Or am I misunderstanding what part of the discussion you’re referring to here?

                                                                                                                                                                              1. 2

                                                                                                                                                                                useful for what?

                                                                                                                                                                                To help them realise they misspoke.

                                                                                                                                                                                but if somebody says “I see no reason to allow killing people,” they don’t deserve the benefit of your generous help?

                                                                                                                                                                                this is getting really tiresome and you are committing inconsistencies that suggest you aren’t giving due consideration to what has already been said. for example you previously said you were happy to use “tautology” according to my preferred usage; now you are insisting on “truism.” I can address your points if you keep them to a paragraph or two, but otherwise it’s really not worth the time at this point. sorry.

                                                                                                                                                                                1. 1

                                                                                                                                                                                  but if somebody says “I see no reason to allow killing people,” they don’t deserve the benefit of your generous help?

                                                                                                                                                                                  I think this will just be treading well-worn ground.

                                                                                                                                                                                  you previously said you were happy to use “tautology” according to my preferred usage; now you are insisting on “truism.”

                                                                                                                                                                                  By that, I just meant that I’m happy to not debate what the term means. In other words, I was happy to reinterpret your prior comments where you use “tautology” and read all instances as “truism” to address you on the substance.

                                                                                                                                                                                  Interpreting your prior comments with that definition and not arguing over semantics doesn’t mean I have to use the word.

                                                                                                                                                                                  I suggested we use “truism” because we both agree on its definition. I was trying, for common ground, to agree with you, but didn’t want to use the word myself, as I wanted to be ultra-clear what I was agreeing to, and I didn’t want my words to be taken out of context, even accidentally.

                                                                                                                                                                                  We’re already having enough trouble understanding each other, but looks like my attempt to be clearer just resulted in the opposite. I see that switching out “tautology” for “truism” may have insinuated that I interpreted you to not already have meant “truism” by “tautology” in that sentence; my bad, that wasn’t my intent.

                                                                                                                                                                                  I also used the distinction, which I didn’t anticipate earlier in this thread; for example, when I say, “I don’t deny it’s fair game to point out it’s a tautology”, because I specifically meant tautology there w/ my original definition (though, thinking about it now, both are probably fair game, really).

                                                                                                                                                                                  I should have clarified that I was using it with my original definition at that point. I didn’t realise in the moment how confusing I was being and just thoughtlessly used both words to signify a distinction.

                                                                                                                                                                                  Which was doubly bad, because I was just making a separate point, because you weren’t even using tautology in that sense when you said, “it’s fair game to point out it’s a tautology”; I missed that because, as I was proof-reading, I saw my sentence, “I don’t deny it’s fair game to point out it’s a truism”, and wanting to specifically mean “tautology”, I ‘corrected’ that sentence, forgetting it was a response to you using the word.

                                                                                                                                                                                  It’s been a long thread.

                                                                                                                                                                                  I can address your points if you keep them to a paragraph or two, but otherwise it’s really not worth the time at this point. sorry.

                                                                                                                                                                                  It’s hard to stick to one paragraph when there’s so much at contention every reply and, again, I’m trying to be as clear as possible.

                                                                                                                                                                                  Also, don’t apologise, I think we’ve both put more than enough time into this.

                                                                                                                                                                                  1. 1

                                                                                                                                                                                    Interpreting your prior comments with that definition and not arguing over semantics doesn’t mean I have to use the word.

                                                                                                                                                                                    I suggested we use “truism” because we both agree on its definition. I was trying, for common ground, to agree with you, but didn’t want to use the word myself, as I wanted to be ultra-clear what I was agreeing to, and I didn’t want my words to be taken out of context, even accidentally.

                                                                                                                                                                                    compare this to:

                                                                                                                                                                                    Just let me know which one you meant by it, I’m not interested in debating the definitions of words except to understand a third-party’s usage; between us, I’m happy to use the term tautology to mean axiom if you like.

                                                                                                                                                                                    was it a mistake for me to assume that if you were happy to use “tautology” to mean “axiom,” you would be happy to use it in the sense that prompted you to say “I understand how you could have reasonably interpreted it as a tautology”? or am I on to something about you being inconsistent after such a long thread?

                                                                                                                                                                                    It’s hard to stick to one paragraph when there’s so much at contention every reply and, again, I’m trying to be as clear as possible.

                                                                                                                                                                                    you can strive for both clarity and succinctness while keeping to the most important points. if I addressed everything in contention in your comments, we would have an exponential explosion in comment length.

                                                                                                                                                                                    1. 1

                                                                                                                                                                                      was it a mistake for me to assume that if you were happy to use “tautology” to mean “axiom,” you would be happy to use it in the sense that prompted you to say “I understand how you could have reasonably interpreted it as a tautology”?

                                                                                                                                                                                      I wasn’t entirely sure what you were saying here, but I went back and checked that, “I understand how […]” quote to look at the context.

                                                                                                                                                                                      I wrote that in response to:

                                                                                                                                                                                      I think “there are no good reasons to forbid X” is a mere restatement of “X should not be forbidden.”

                                                                                                                                                                                      In other words, the use of tautology here is not “truism”, but my original definition of restating in different words, despite this part of the conversation happening pretty soon after I’d said, “let me know which one you want to use”.

                                                                                                                                                                                      In fact, you say as much right before:

                                                                                                                                                                                      […] and I’m tired of having to keep asking you about where you stand on the tautology thing and what definition you want to use or anything about that […]

                                                                                                                                                                                      […] I think the OED definition I gave is just fine: “[…] restates in different words the very thing […]”

                                                                                                                                                                                      That’d probably explain why I started using “tautology” as “restating”. Because after I kept pestering you for which definition you want to use, you stuck with the OED definition of “restat[ing]” and used the word with that definition.

                                                                                                                                                                                      That might also explain why I continued to use the two words in distinct ways, and reworded (with strikethrough) your use of “tautology” to “truism” in the specific sentences where I suspected you were reverting to using it as such, to be clear that I interpreted it that way, or wanted to agree or disagree on the sentence as interpreted in that way.

                                                                                                                                                                                      or am I on to something about you being inconsistent after such a long thread?

                                                                                                                                                                                      As I said, I didn’t anticipate the need to use both words with their distinct meanings, instead of as synonyms, when I offered to interpret your words how you mean them without debating semantics.

                                                                                                                                                                                      Beyond that, I gave multiple reasons why I started to use tautology with my original definition again. Looks like I should add to the list: I asked you which definition to use, and you chose the OED one to the list. I had forgotten that, and it seems you had, too.

                                                                                                                                                                                      Probably we’ve both been inconsistent after such a long thread, at the very least in how we’ve expressed our points. It feels like you’re trying to reach for a gotcha instead of constructively trying to understand what I meant at various points.

                                                                                                                                                                                      I said earlier, “I should have clarified that I was using it with my original definition at that point”. I stand by that.

                                                                                                                                                                                      However, I see now that when I offered to let you choose a definition, you went with the OED one. So, I think you should take back your saying, “you previously said you were happy to use “tautology” according to my preferred usage; now you are insisting on “truism.””.

                                                                                                                                                                                      I found myself considering if you were using it to mean “truism” again, despite saying to use the OED definition, so I chose to be explicit and just use “truism” when I meant that or suspected you meant that.

                                                                                                                                                                                      Honestly, we should have probably just chose a third word or set of words to express ourselves for “tautology” and “truism”. I used “axiom” a few times to replace what I mean by “truism”.

                                                                                                                                                                                      you can strive for both clarity and succinctness while keeping to the most important points. if I addressed everything in contention in your comments, we would have an exponential explosion in comment length.

                                                                                                                                                                                      This whole thread has felt like an inquisition.

                                                                                                                                                                                      My words have dumbfounded you, exasperated you, provoked snark from you, and I’ve tried my best to engage with everything I could in good faith, admit where I made mistakes, and try to find common ground.

                                                                                                                                                                                      In response, it feels like, despite you calling for charitable interpretation, all you’ve done is interpret my words in the least charitable but still plausible way, trying to catch me out on contradictions (that could be resolved with some charity).

                                                                                                                                                                                      So I think I can be forgiven for overexplaining myself.

                                                                                                                                                                                        1. 1

                                                                                                                                                                                          you don’t owe me anything and there’s nothing to forgive. I just think you could benefit from learning to focus on what’s important and to express yourself more clearly and succinctly.

                                                                                                                                                                                          it seems that we have largely resolved the question that started this thread. I’m not sure there’s much reason to continue. you seemed interested in why I thought you contradicted yourself, and I am still not convinced by your defense – my honest impression is that you are incapable of admitting a mistake, a very unfortunate condition, so I thought that showing it to you clearly might help. but if you aren’t enjoying the “inquisition” then I won’t keep pushing. and if you have admitted a mistake in this thread I wouldn’t mind seeing where so I can account for why I would have missed it. otherwise good luck.

                                                                                                                                                                                          1. 1

                                                                                                                                                                                            my honest impression is that you are incapable of admitting a mistake, a very unfortunate condition, so I thought that showing it to you clearly might help.

                                                                                                                                                                                            I admitted several mistakes in this thread, AFAICT you admitted none.

                                                                                                                                                                                            if you have admitted a mistake in this thread I wouldn’t mind seeing

                                                                                                                                                                                            At least here:

                                                                                                                                                                                            As I said, I didn’t anticipate the need to use both words with their distinct meanings, instead of as synonyms, when I offered to interpret your words how you mean them without debating semantics.

                                                                                                                                                                                            and here:

                                                                                                                                                                                            I should have clarified that I was using it with my original definition at that point. I didn’t realise in the moment how confusing I was being and just thoughtlessly used both words to signify a distinction.

                                                                                                                                                                                            Which was doubly bad, because […]; I missed that because […], and wanting to […], I ‘corrected’ that sentence, forgetting it was […].

                                                                                                                                                          2. 29

                                                                                                                                                            Mobile phones are important as their own category, laptops don’t replace them.

                                                                                                                                                            In the mobile market in the EU there is a strong Apple + Google duopoly. Apple does whatever they want, and Google has no incentive to be any better, because there’s no third mass-market option that could threaten their business.

                                                                                                                                                            Android is also becoming increasingly more closed. Google uses access to the PlayStore and its proprietary Android libraries (required by lots of apps) as a way to control Android vendors, and prevent them from removing Google’s self-promotion and control from Android.

                                                                                                                                                            This isn’t a healthy competitive market. It’s two landlords who can dictate any terms they want.

                                                                                                                                                            1. 21

                                                                                                                                                              The EU is going after Apple at the behest of companies like Spotify and Epic.

                                                                                                                                                              This is a fight between large companies and we have to hope that we don’t get trampled in the process.

                                                                                                                                                              1. 19

                                                                                                                                                                The EU is going after Apple at the behest of companies like Spotify and Epic.

                                                                                                                                                                This is not incorrect, but imprecise…

                                                                                                                                                                This is a fight between large companies and we just have to hope we don’t get >trampled in the process.

                                                                                                                                                                …and this is incorrect. The actual situation is as follows: The European Commission has formally asserted that Apple is a “gatekeeper” under Art. 3 DMA on 2023-09-06. Art. 3(1) DMA gives the criteria when a “gatekeeper” is to be assumed. Art. 3(4) DMA mandates the Commission to designate a company as a “gatekeeper” ex officio and does not depend on a request from a private party. The formal designation as a “gatekeeper” by the Commission causes certain duties of interoperability for the designated which are laid out in other articles of the DMA.

                                                                                                                                                                About a year later, the Commission has started a proceedings against Apple due to violation of its gatekeeper responsibilities under the DMA as per Art. 8(2) DMA This article, again, allows the Commission to act ex officio without a preceeding private request. This latter proceedings does not yet seem to have come to a conclusive decision. Ultimately, this second proceedings may lead to a fine against Apple (Artt. 29, 30 DMA).

                                                                                                                                                                From the talk’s description – I have not watched the talk myself – I conclude that Apple is challenging the first decision – the designation as a gatekeeper under Art. 3 DMA by the Commission – in court now. That decision of the Commission is formally binding against a specific private company (Apple) and can as such be brought directly before the European Courts as per Art. 263(4) TFEU. As per Art. 256(1)(1) TFEU, it is to be brought before the European Court of the first instance, which is not – as the headline implies – “the EU’s highest court”, but rather, well, the court of the first instance. Against this court’s decision it is possible to appeal as per Art. 256(1)(2) TFEU to the Court of Justice of the European Union, which then is the “highest EU court” for this case as it is not possible to further contest its decision.

                                                                                                                                                                If the courts decide in favour of Apple, the Commission’s designation of Apple as a “gatekeeper” is void and Apple does not have to comply with the DMA at all, making the aforementioned second proceedings irrelevant.

                                                                                                                                                                While to my knowledge the Commission has not publically said that it received requests by Epic or other companies to act against Apple, it did publically request feedback during the aforementioned proceedings and it is only likely that Epic and others have submitted such feedback. German media outlets did report about complaints by Epic and other companies but I was unable to find an official acknowledgement of the Commission of this.

                                                                                                                                                                In any case, Epic and other companies are not direct parties to the lawsuit at hand, and neither is the FSFE. It is a lawsuit between Apple the European Commission in the first place, and any other people are only involved on a secondary level, which may include – as it seems to be the case with the FSFE – some special privilegues, which probably mostly amount to the ability to testify in some way or another. I’m not firm enough in CJEU process law to answer this question in detail. As is however widely known, CJEU process law does not include a possibility to submit amicus curiae briefs, thus the FSFE’s formal secondary involvement probably is intended to substitute that.

                                                                                                                                                              2. 15

                                                                                                                                                                Here’s a simple one: without the DMA, you cannot run actual Chrome or Firefox on iOS. They’re just skins on top of Safari’s WebKit.

                                                                                                                                                                Oh, want to run an emulator on iOS? That was banned by their Store Guidelines. These are software blocks that artificially limit what you can run on hardware you’re supposed to own.

                                                                                                                                                                I have an old iPod I can’t really use anymore, because the iTunes Store APIs have changed, and it can’t talk to Apple anymore.

                                                                                                                                                                Here’s a possible future we avoided: without anti-competitive legislation, we might all still be stuck supporting Internet Explorer. The web exploded once that monopolistic lever was cut.

                                                                                                                                                                If it weren’t for being stuck in Apple’s castle, an iPhone would be on the cards, as the hardware is generally better than the rest. But then I’m stuck with the artificial limitations Apple enforce, that aren’t a function of the hardware. Heck, even Apple laptops pre-ARM were more functional running Windows than macOS because of the way they lock down hardware with their software. I still use Windows on my old MacBook Air because (for me), it’s actually better. I’d love to be able to do similar with their phones.

                                                                                                                                                                1. 13

                                                                                                                                                                  Sounds bogus to me. There’s a gazillion hardware platforms. Pick an android device. Pick any of a thousand laptop brands.

                                                                                                                                                                  In other words, don’t enforce the law?

                                                                                                                                                                  Apple doesn’t have to do business in the EU. Pick another market.

                                                                                                                                                                  1. 2

                                                                                                                                                                    How do cryptography experts go about designing new protocols?

                                                                                                                                                                    Presumably they’re getting reviews from other experts, but are there lists of known DOs and DONTs for various cryptographic schemes out there that they check against (and is this what FIPS is)? Alternatively, are all these weaknesses and attacks just sort of out in the world of research papers and the experts just have to keep on top of it as much as possible and know when they apply?

                                                                                                                                                                    1. 9

                                                                                                                                                                      How do cryptography experts go about designing new protocols?

                                                                                                                                                                      With extreme amounts of humility and a very clear scope of “why am I designing anything novel in the first place?”

                                                                                                                                                                      A lot of time is spent on requirements. Once you think you have those hammered out, you write a prototype and a threat model for your prototype. Then you share each component (requirements, prototype, threat model) with different peers to review each.

                                                                                                                                                                      What happens next is a gradient of novelty. On one end, you have “open specification and prototype is good enough”. On the other, you have “academic paper + formal verification of software correctness” levels of assurance, usually combined with multiple audits from independent pentesting firms that specialize in cryptography.

                                                                                                                                                                      Sometimes, you don’t need to go as far. You should always try to attain the highest level of assurance you can, though.

                                                                                                                                                                      1. 2

                                                                                                                                                                        Thank you (and the sibling comments), this is very clear and helpful

                                                                                                                                                                        With extreme amounts of humility and a very clear scope of “why am I designing anything novel in the first place?”

                                                                                                                                                                        Something I see in the other thread is that sometimes you have some requirements but don’t really what existing solution you should use to fit them. I think articles like this one from this same author help with that.

                                                                                                                                                                        Even personally within the last year I went down the rabbit hole of wanting a protocol that satisfies some specific properties and started drafting something myself that I thought would work.

                                                                                                                                                                        I’ve heard the “don’t roll your own” rule enough times to know I wouldn’t be able to get it right, but I still got as far as presenting it to people at work before finding that somebody more qualified had already designed it.

                                                                                                                                                                      2. 2

                                                                                                                                                                        How do cryptography experts go about designing new protocols?

                                                                                                                                                                        Going by my knowledge of how it works in other fields, it’s a two step process. First, think through a new protocol intuitively. Second, formally define a threat model and prove that the protocol is safe against that threat model. Knowing a bunch of specific attacks would be helpful for the first step, but not for the second.

                                                                                                                                                                      3. 0

                                                                                                                                                                        i wouldn’t hire them either.

                                                                                                                                                                        1. 14

                                                                                                                                                                          Mind sharing why? Any specific mistakes or problems in OP’s story that others can learn from?

                                                                                                                                                                          1. 2

                                                                                                                                                                            I don’t believe OP’s story is completely honest, that under pressure he figured to change the base so that the trailing digit was always a multiple of a divisor of the base. Just seems random to come up with that.

                                                                                                                                                                            1. 19

                                                                                                                                                                              I’d say that was a fairly obvious move to me, from stuff I learned in first year undergrad. Definitely stuff you could figure out on the back of an envelope if you’re already in the headspace of thinking about digits and representation of integers.

                                                                                                                                                                              1. 9

                                                                                                                                                                                The status of numeric bases in undergraduate (and even secondary education) also seems to vary wildly by country, when you went to school, and how many leetcode-style challenges you’ve done.

                                                                                                                                                                                I don’t remember the specifics, and I certainly can’t claim I would’ve thought about that, but I remember being shown a variant of that in 5th or 6th grade or whenever the hell they taught me numeric bases. It was something about how each numeric base has its own divisibility rules, and that they all have their own variant of “if it ends with a 5 or a 0”. When I went to school, numeric bases were definitely important enough that I remember reaching out for various “useful” properties related to them up to my last year of high school (after which I was thankfully spared the plight of exam-driven mathematics…).

                                                                                                                                                                                Also, this seems to be surprisingly popular in some interviewing niches. Over the years I’ve ran into several interns or fresh graduate juniors who’d memorized very weird divisibility rules that are definitely not covered in school, like divisibility by 19 or that subtract-last-digit-from-twice-the-rest rule for divisibility by 12. When I asked about it (number theory is one of those things that’s always fascinated me but I never had time for so I try to live vicariously through whoever seems to have an interest in it) they all told me they have zero interest in number theory in general but these things sometimes come up in coding challenges and knowing them is useful.

                                                                                                                                                                                1. 1

                                                                                                                                                                                  or that subtract-last-digit-from-twice-the-rest rule for divisibility by 12.

                                                                                                                                                                                  … how is that easier than just testing divisibility by 3 and 4

                                                                                                                                                                                  1. 2

                                                                                                                                                                                    Probably something to do with symbolic testing of very large integers

                                                                                                                                                                                    1. 4

                                                                                                                                                                                      Not really. I think.

                                                                                                                                                                                      The trick behind divisibility by a number n, is to check for 10^i % n, and see if you see a pattern. 2 and 5 have the easiest pattern: powers of 10 modulo 2 or 5 always equal zero, except for 10^0 (that is, 1). Which means you only have to look at the last digit to know if you have a multiple of 2 or 5.

                                                                                                                                                                                      3 and 9 have the next easiest rule. Turns out that for all i, 10^i % 3 = 1. Same for 9. In practice this means that 10*n % 3 = n % 3 (same for 9), and you can recursively divide by 10 the higher digits until you only get a sum of “unit” digits. And of course, the rule works recursively, so just rinse and repeat until you get a single digit, and voilà you know if it’s a multiple of 3 or 9.

                                                                                                                                                                                      4 I don’t know at the top of my head, but it’s easy to find:

                                                                                                                                                                                      10^0 = 1 % 4
                                                                                                                                                                                      10^1 = 2 % 4
                                                                                                                                                                                      10^2 = 0 % 4
                                                                                                                                                                                      10^3 = 0 % 4
                                                                                                                                                                                       // all zero from now on
                                                                                                                                                                                      

                                                                                                                                                                                      So only the last 2 digits contribute. So for a number xxxxab, you just sum 2*a + b, and see if that is a multiple of 4. Another way of seeing it is, if a is even then b must be 0, 4, or 8. If it’s odd, b must be 2 or 6.

                                                                                                                                                                                      Since 12 = 3*4, and 3 and 4 are coprimes, to test if something is a multiple of 12 you just test if it’s a multiple of 3 and a multiple of 4. Very easy.


                                                                                                                                                                                      Now let’s try 12…

                                                                                                                                                                                      10^0 = 1 % 12
                                                                                                                                                                                      10^1 = 10 % 12 = -2 % 12
                                                                                                                                                                                      10^2 = 4 % 12
                                                                                                                                                                                      10^3 = 4 % 12
                                                                                                                                                                                      // It’s all 4 from now on
                                                                                                                                                                                      

                                                                                                                                                                                      Okay, so the rule is a little unhinged: all digits count 4 times, except the first (it counts normally), and the penultimate one (it counts minus double — easier than counting 10 times). So… I would:

                                                                                                                                                                                      • Sum all numbers except the last 2.
                                                                                                                                                                                      • Multiply by 2.
                                                                                                                                                                                      • Subtract the penultimate digit.
                                                                                                                                                                                      • Multiply by 2.
                                                                                                                                                                                      • Add the first digit.
                                                                                                                                                                                      • Repeat the above recursively, until I get a single digit. Only good result is zero. Oh and by the way you may go through negative numbers while doing the procedure.

                                                                                                                                                                                      No fucking way that’s easier than just checking for 3 and 4, no matter how many digits… unless perhaps we start exploring more advanced strategies.


                                                                                                                                                                                      For big numbers one does not simply do sums. Okay then, let’s shave some numbers. For 3 you can:

                                                                                                                                                                                      c = 0
                                                                                                                                                                                      for each digit d
                                                                                                                                                                                          if d == 0, 3, 6, or 9 -> ignore.
                                                                                                                                                                                          if d == 1, 4, or 7    -> c = c+1
                                                                                                                                                                                          if d == 2, 5, or 8    -> c = c-1
                                                                                                                                                                                          if c == 3 or -3       -> c = 0
                                                                                                                                                                                      

                                                                                                                                                                                      I believe this is as simple as it gets. O(nb_digits) time, O(1) space, I think 12’s strategy can’t get any simpler — I suspect it is nearly identical except at the end, but not simpler.

                                                                                                                                                                                      Hey! I accidentally found an algorithm to solve this stupid Fizzbuzz without having to change the base, and without the sum lookup matrix!

                                                                                                                                                                                      Edit: pinging @x64k and @hwayne

                                                                                                                                                                                      1. 3

                                                                                                                                                                                        Hey! I accidentally found an algorithm to solve this stupid Fizzbuzz without having to change the base, and without the sum lookup matrix!

                                                                                                                                                                                        I think what you did is observe that you can make the sum table much smaller by only representing it mod 3.

                                                                                                                                                                                        1. 4

                                                                                                                                                                                          Err… yes, you’re correct, that’s the true insight. Now since the table is banned, I’m still gonna use a switch statement to obfuscate it into code, so they can’t say I “hardcoded” it — even though the switch statement would be even more hard coded than the table…

                                                                                                                                                                                    2. 1

                                                                                                                                                                                      I have absolutely no idea. I obviously have no idea how or why that would ever come up in a coding challenge but I really don’t know how that’s a useful rule in general, either. The best hypothesis I could come up with was that maybe, since lots of units are duodecimal (12 months in a year, 12 pence in a shilling, 12 inches in a foot etc.) knowing the multiples of 12 by heart up to 120 was pretty common at some point. In that case, this is a convenient way to check for divisibility by 12 for numbers up to 600 or so without actually doing any division or multiplication – if you can add numbers, you can double them, too.

                                                                                                                                                                                      But I’m really not convinced. Anyone who knows the multiples of 12 up to 120 and can add numbers can presumably check for divisibility by 3 for numbers up to 600 or so, and you don’t need to do any arithmetic to check for divisibility by 4, either.

                                                                                                                                                                                      If I had to guess, I’d say it’s just a common result that pops up in undergrad number theory courses or something. There are similar criteria for 7, 11, 13, and probably others I don’t remember right now.

                                                                                                                                                                                2. 2

                                                                                                                                                                                  Using the browser is allowed but looking for FizzBuzz or entering pages that talk about FizzBuzz is not

                                                                                                                                                                                  Doesn’t that explain it?

                                                                                                                                                                              2. 1

                                                                                                                                                                                I’ve worked with people like that and I wouldn’t hire them either.

                                                                                                                                                                                They might be great at working on their own but will have difficulty fitting into a team. They can’t resist the temptation to show off when what you really need is code that the whole team can maintain. Also trying to keep them on track is a nightmare, you may have a pressing business need that gets ignored whilst they go off in their own direction.

                                                                                                                                                                                1. 12

                                                                                                                                                                                  Erm, it’s worth remembering that they actually started with the canonical FizzBuzz implementation. They ended up with that weird type thing after the interviewers introduced additional “rules”, chief among them being that they couldn’t use numeric types, number literals, or associated methods and operators, and it all had to fit in no more than 30 lines without any minifying tricks.

                                                                                                                                                                                  They didn’t do that to show off, the interviewers literally asked for a solution like that.

                                                                                                                                                                                  A type-based implementation is actually not a bad idea at all – it’s clean, a core language feature, and easy to adapt if the “no more than 30 lines rule” turns into “no more than 20 lines actually”. The numeral base quirk was added because the interviewer objected to the sum table as “partially hardcoding the solution” (!?).

                                                                                                                                                                                  Hopefully their internal codebases doesn’t actually store numbers as strings and operates on them without any numerical operators. Why they’d ask for that kind of stuff in an interview is anyone’s guess.

                                                                                                                                                                              3. 6

                                                                                                                                                                                I’ve found a simple date is all you need sometimes, no fancy format, just year-month-day, I also liked minecraft’s year-week approach given it was unlikely to release multiple versions in the same week, and I think if they did they just appended a number like 16-w12-2

                                                                                                                                                                                I’ve also just done build numbers before too, each compile increased a number in a file, that file was #include’d into the source and that was the version!

                                                                                                                                                                                1. 2

                                                                                                                                                                                  Same. For applications and services a timestamp is really all you need. We have this at work:

                                                                                                                                                                                  alias gt='git tag -a $(date -u +v%Y%m%d.0.0-%H%MZ)'
                                                                                                                                                                                  

                                                                                                                                                                                  It produces tags like:

                                                                                                                                                                                  v20241010.0.0-1956Z
                                                                                                                                                                                  

                                                                                                                                                                                  This format is compliant with SemVer to satisfy CI/CD tools that check and enforce semantic versioning.

                                                                                                                                                                                  1. 1

                                                                                                                                                                                    For my Go modules, I usually just do v0.YEAR.releasenumber. A lot of my modules are close to finished, so release number is generally low.

                                                                                                                                                                                  2. 1

                                                                                                                                                                                    I used to use dates with a big feature release early in the new year. The only problem I found was that I would get a flurry of bug fixes early on which would then tail away through the year. Some users would interpret that as meaning the project is dead because it hasn’t been updated for a couple of months.

                                                                                                                                                                                  3. 2

                                                                                                                                                                                    I clicked “random page” and the very first example looked AI generated. Would a human add a dependency to find out what zero is for an i32? Maybe I’m being too harsh.

                                                                                                                                                                                    extern crate num;
                                                                                                                                                                                    
                                                                                                                                                                                    use num::traits::Zero;
                                                                                                                                                                                    
                                                                                                                                                                                    fn equilibrium_indices(v: &[i32]) -> Vec<usize> {
                                                                                                                                                                                        // [...]
                                                                                                                                                                                        let mut left = i32::zero();
                                                                                                                                                                                        // [...]
                                                                                                                                                                                    }
                                                                                                                                                                                    

                                                                                                                                                                                    I know it’s a wiki and can be vetted by humans, but fixing AI code doesn’t seem fun. Neither does cheating these challenges with AI.

                                                                                                                                                                                    1. 2

                                                                                                                                                                                      Would an AI add such a dependency? Remember that LLMs don’t know anything, they just follow whatever patterns were in their training data.

                                                                                                                                                                                      1. 2

                                                                                                                                                                                        Yes, maybe I was too presumptive. Perhaps the author started with a generic impl Zero function and decided later to just use i32, forgetting to remove the dependency.

                                                                                                                                                                                      2. 2

                                                                                                                                                                                        That’s from 2021, so definitely a human (if not an expert human).

                                                                                                                                                                                      3. 65

                                                                                                                                                                                        A laptop for just €950 is bound to be crappy, have some issues, and not last very long. Or so you’d think.

                                                                                                                                                                                        Sorry what? Is it just me or is this kind of out of touch? (Or am I just too frugal?) I get its an Apple product but this is still expensive in my books. This is about how much I’d expect to pay for a new decently good laptop. Converted to AUD this about how much I paid for my brand new at the time, Lenovo X1 Carbon (gen5 - it’s on its way out now).

                                                                                                                                                                                        I’d not spend anywhere near this for a laptop I’d expect to be “crappy”.

                                                                                                                                                                                        1. 26

                                                                                                                                                                                          Agree. I have never, and would never, spend this much on a laptop unless it were something incredibly special. Thinking of this as “cheap” feels like the author is on another planet

                                                                                                                                                                                          1. 10

                                                                                                                                                                                            Really? I feel like the average high-end laptop goes for $1,500+

                                                                                                                                                                                            1. 4

                                                                                                                                                                                              But as the author stated it’s for couch/personal use.

                                                                                                                                                                                              Who needs a “high-end” machine for that?

                                                                                                                                                                                              My personal laptop is a T460p from 2016. It can do everything I’ve ever wanted to do (except 3d games). I don’t see any real benefit that my work M3 MBP has. Nothing. Maybe compiling stuff faster, I’ve not compared anything.

                                                                                                                                                                                              I have a gaming laptop here that cost 1500 and played every game in HQ that was tried so far.

                                                                                                                                                                                              “average” is way out of touch.

                                                                                                                                                                                              1. 2

                                                                                                                                                                                                I like using a laptop that has battery life I don’t have to worry about. That, and high end machines tend to last longer - your T460p was absolutely high end when it was new. I doubt i.e. a Chromebook of the time would have lasted you as long.

                                                                                                                                                                                                1. 1

                                                                                                                                                                                                  It was about price - you can have something a little older for a good price. Also battery can be a point for some people, for me it’s not. I’ve lived through the ages for “lasts for 2h” and this one is not that that.

                                                                                                                                                                                                  Also Chromebooks were to be had for like 300 - this was about if 900 is about a laptop that might be crappy.

                                                                                                                                                                                                2. 1

                                                                                                                                                                                                  But as the author stated it’s for couch/personal use.

                                                                                                                                                                                                  For couch use I definitely wouldn’t want something other than a MacBook Air, tbh. Everything else seems to run hot and have a shorter battery life. Reasonable enough as semi-portable workstations, not at all good for casual use possibly away from an outlet.

                                                                                                                                                                                                  1. 1

                                                                                                                                                                                                    That’s ok, I’m not telling you not to. But this discussion wasn’t based on the premise if anything that is not a mac is deemed adequate or not

                                                                                                                                                                                                  2. 1

                                                                                                                                                                                                    *nod* “My laptop” is a hand-me-down Lenovo Ideapad from the mid 2010s running Kubuntu like my desktop (a 2023 Ryzen for faster rustc) and, to be honest, the laptop I use most is the hand-me-down Thinkpad T410 where I took advantage of the availability of Windows XP drivers and Inexperience Patchers to make it a fairly convincing fake Windows 98SE.

                                                                                                                                                                                                    (And then, only a week ago, after pouring all that effort in, I remembered that my “stuff to get to” pile contains a hand-me-down Thinkpad T42 that actually has Windows 98SE drivers available for download and won’t make me dance around Intel HD video drivers which don’t want to remember “preserve aspect ratio” across changes to widescreen resolutions. Oh well… I had fun.)

                                                                                                                                                                                                    Seriously, though. As long as you’re not using a web browser, playing modern games, or decoding H.265, it’s ridiculous how fully functional Windows XP is with WinAMP 2.95 and ffdshow for the media side of things. Hell, my “gaming rig” is a 2012 HP prebuilt with a 2009 Radeon, a SATA SSD, and Windows 7 (KVMed in to fix a bunch of Gaming+multi-monitor papercuts on the Ryzen) and it still does 99% of gaming related things I care about. As long as you’re not into AAA games, the slow-down in tech is real.

                                                                                                                                                                                                  3. 3

                                                                                                                                                                                                    I don’t think a laptop can both be average and high end ;) But TIL that $2500 laptops exist, that seems nuts…

                                                                                                                                                                                                    1. 18

                                                                                                                                                                                                      A fully loaded 16-inch MacBook Pro comes in at $7,500.

                                                                                                                                                                                                      That shouldn’t be surprising, there are a lot of wealthy people in the US. Companies are going to do their best to get their hands on that money.

                                                                                                                                                                                                      1. 4

                                                                                                                                                                                                        As far as Apple laptops go… Yeah.. $2500 isn’t even scratching the surface :P

                                                                                                                                                                                                    2. 5

                                                                                                                                                                                                      I’ve been self-employed for a very long time, so the incentives are different, I guess. I don’t replace my laptop very often, but when I do, I don’t think about spending double that or more since it’s the way I provide for myself and any optimisation there is a no-brainer.

                                                                                                                                                                                                      As for a personal laptop, I would tend to agree with you, my personal one is an 11-year-old 15” MacBook Pro, still running smoothly.

                                                                                                                                                                                                    3. 17

                                                                                                                                                                                                      Yes and no. It’s about where the line for a laptop I’d expect to work well is, but there are a lot of cheaper models on the market. Dell’s web site has ones starting at £300 (including VAT, 6-core i3 processor, 15” screen, 8 GiB RAM. 256 GB SSD).

                                                                                                                                                                                                      My experience with those is that they’re a false economy. The last Dell we bought was about £450 had the battery die after six months. The replacements were over £100. Dell support claimed that batteries were a ‘consumable’ not a replacement part (in spite of being listed under replacement parts on their web site) and so not covered by warranty. I was advised I could take them to the small claims court but I didn’t have the time nor energy, I just decided to never buy a Dell again and tell this story at every opportunity: it will probably cost them more in the long run.

                                                                                                                                                                                                      In comparison, I’ve had several batteries die in Macs after a couple of years. Back when they were easily replaceable, Apple would courier replacements out to me and they arrived at 9am the day after I called their service line (as an individual, no corporate support). Now, I have to take machines into the Apple Store or have them collect the machine and then repair it and send it back, which would be more annoying if I still lived somewhere where the nearest Apple Store as a couple of hours train ride away.

                                                                                                                                                                                                      Sometimes you get lucky with the cheap machines, sometimes you don’t. Some of the mid-range Lenovo models seem to last very well. The old IBM ThinkPads were tanks. I tripped over the charging cable of my R31 in the middle of a big compile job (hitting the disk hard) and kicked it across the room. Compiler paused for two seconds and it then continued as if nothing happened and the machine suffered no ill effects (MagSafe has saved me from doing the same with Macs a few times).

                                                                                                                                                                                                      Some of the more expensive machines are also not worth it. Microsoft gave me a top-of-the-line Surface Book 2 (2018 model) when I was there. The touchscreen was nice. Being able to detach the screen was sometimes nice but the battery life detached was awful (it wasn’t great anyway) and they didn’t do the obvious thing of having the base work as a Bluetooth keyboard when detached, which would have made the tablet mode much more useful. Windows updates broke it periodically. Thermal dissipation was bad and video calls made it slow to a crawl (typing in Teams took seconds for characters to appear when a video call was running, and because async JavaScript is hard, they would often appear in reverse order, one second apart). A lot of this is because every sensible kernel has a rule that the only thing you do in ISRs is prod a lock or trigger a work queue, whereas Windows actually does a load of stuff in ISRs, which makes latency absolutely terrible, but some of it was hardware. It definitely wasn’t worth the £2500 price tag.

                                                                                                                                                                                                      My last MacBook Pro was a late 2013 model. It cost around £2500 (almost all of the options turned up to 11), but lasted ten years of daily use (battery finally died after six or seven years, long out of warranty, and I replaced it myself with a fairly cheap replacement). It was much better value than the £450 Dell that lasted six months.

                                                                                                                                                                                                      I’d expect a €950 laptop to be something decent that should last many years. Not the most powerful, but at least well built and fast enough for 90% of what I do.

                                                                                                                                                                                                      1. 5

                                                                                                                                                                                                        I’ve also had a lot of luck with refurbished machines. You can often get a decent, modern machine with 30% discount just because it’s got a small scratch, or is a corporate return for some reason (you can tell by the higher windows tier and 3 year on-site support included). There’s some risk of course (returned due to some defect that the service didn’t notice/fix), but I’ve been happy doing this for years.

                                                                                                                                                                                                        1. 3

                                                                                                                                                                                                          For personal laptops, I don’t see myself buying another one brand-new. I’m just an average power user, not an AI developer or gamer. Web browsing, coding, videos, and light retrogaming are the extent of my activities. I try to buy used or refurbished from a reputable dealer.

                                                                                                                                                                                                          I was once within seconds of buying a Framework 16” laptop for something like $1,800. That would have been a hefty price, more than I’ve ever paid for a laptop, but I liked the product, the company, and what they stood for. Before I noticed that it wouldn’t even ship for 5 months at the earliest. I decided to look around and found a great deal on a used Dell Precision workstation laptop with around the same specs give or take a few GHz for $900. I sat on it for a while and went to check the price on the morning of Black Friday and found that they dropped the price by 50%, so I got it for well under $500. It’s not my favorite laptop I’ve ever owned but it does the job, especially for what I paid.

                                                                                                                                                                                                          1. 1

                                                                                                                                                                                                            Yup, my partner got a second-hand late 2013 MacBook Pro about five years after I got mine new. Hers cost around £500 and was great. She replaced it with a new MacBook Air about a year after I replaced mine.

                                                                                                                                                                                                            1. 1

                                                                                                                                                                                                              I had a laptop I used for years. The WiFi driver was broken under windows. So it was half off when I bought it refurbished. Machine worked great under Linux.

                                                                                                                                                                                                            2. 4

                                                                                                                                                                                                              I just decided to never buy a Dell again and tell this story at every opportunity: it will probably cost them more in the long run.

                                                                                                                                                                                                              I’ve only ever had excellent experiences with Dell. I don’t have a policy of saying so at every opportunity, but I feel like this is as good an opportunity as any to share my experience.

                                                                                                                                                                                                              I’ve had four Dell laptops over the past 15ish years. Three I bought, one was inherited. I believe I bought one replacement battery during that time, although I didn’t actually use them on battery power much. I have found the quality of the machines and the customer service absolutely top notch, and my experience has been so good that I’ll never bother looking at another manufacturer unless it’s a “speciality” manufacturer like Framework, unless I have some particular needs for some reason, or unless I have a bad experience with Dell (which may yet happen).

                                                                                                                                                                                                              1. 2

                                                                                                                                                                                                                I totally agree with all of that. What I want doesn’t currently exist but I hope it will soon. It’s something with the build quality of a MacBook but which not only runs other operating systems but is guaranteed (within reason!) to always do so. The heroic nature of the work that the Asahi Linux people have to do is impressive and commendable sure but also worrying.

                                                                                                                                                                                                                1. 5

                                                                                                                                                                                                                  The heroic nature of the work that the Asahi Linux people have to do is impressive and commendable sure but also worrying

                                                                                                                                                                                                                  They’ve had to reverse engineer the GPU and some other things, but Apple put in a lot of effort to make it possible to boot other operating systems without impacting secure boot of macOS.

                                                                                                                                                                                                                  I haven’t used on personally but everything I’ve heard about the Framework laptops has been glowing.

                                                                                                                                                                                                                  Their cheapest model is more expensive than the MBA in the article. Their cheapest model upgrade potential might make it cheaper in the long run, but given that I replaced my last Mac because it was starting to physically wear out, I’m not 100% sure.

                                                                                                                                                                                                                  I used to build my own desktops and upgrade them, but then I wanted a new CPU. The new CPU needed a new motherboard. The new motherboard needed new RAM and a new graphics card. At the end, I kept the case and hard disk, and at that point I had almost enough spare parts left over for a complete new computer, so the savings from upgrading were fairly minimal.

                                                                                                                                                                                                                  1. 2

                                                                                                                                                                                                                    They’ve had to reverse engineer the GPU and some other things, but Apple put in a lot of effort to make it possible to boot other operating systems without impacting secure boot of macOS.

                                                                                                                                                                                                                    Yes! In case I wasn’t clear, I didn’t mean that Apple failed to be helpful. Still, the end result is that we can be much more sure that a generic laptop will run arbitrary other operating systems than that a modern-architecture MacBook will. So I’m waiting for the best of both worlds :-)

                                                                                                                                                                                                                2. 2

                                                                                                                                                                                                                  There is a reason people I know call it dHell.

                                                                                                                                                                                                                  1. 1

                                                                                                                                                                                                                    It’s about where the line for a laptop I’d expect to work well is, but there are a lot of cheaper models on the market. I’d expect a €950 laptop to be something decent that should last many years. Not the most powerful, but at least well built and fast enough for 90% of what I do.

                                                                                                                                                                                                                    I agree, totally!
                                                                                                                                                                                                                    I also agree that Macbooks are worth the premium for such a nice polished device over competitors of similar and more expensive prices, and like you say, they can last quite a while.

                                                                                                                                                                                                                    But my point is still like.. €950? Its just not what I expect for a crappy piece of hardware like the author says in the intro. I wouldn’t expect a crappy macbook or a crappy non-macbook for this price. It’s even only slightly more than how much I’d expect to pay for a second hand macbook of these specs too.

                                                                                                                                                                                                                    1. 5

                                                                                                                                                                                                                      Yup, after reading that line I was expecting it to be about a netbook successor or something. Cheap crappy laptops start at around €300 these days. Find one of those that’s good and you have made a great discovery. Find a thousand Euro laptop that’s good and, uh, yes, that’s expected. Spending a thousand Euros on a laptop and discovering that it’s crappy would be a story.

                                                                                                                                                                                                                  2. 6

                                                                                                                                                                                                                    I’m French and I agree, a 950 € laptop would qualify as high end in my books. Not the highest end sure, but definitely not crappy.

                                                                                                                                                                                                                    1. 3

                                                                                                                                                                                                                      A few years ago I got a Thinkpad T14 AMD for 1389 Euro and the build quality was pretty underwhelming. I opened it to add RAM, but it didn’t seem like something I should do a dozen of times. Also, the electronics looked like a patchwork. Luckily this was during COVID scarcity and I could sell it without much loss. I think there are better-built ThinkPads, but they were more expensive than that. So I wonder what these high-end 950 Euro laptops are.

                                                                                                                                                                                                                      I replaced it with a MacBook Air M1, which was the same ballpark with some upgrades and it was much better built, far better display, faster, and quiet (the T14 could get noisy under load).

                                                                                                                                                                                                                      I usually recoup a substantial part of the cost of a MacBook and use it to buy the next one. I used to upgrade every 1.5 years or so, but since getting my 14” M1 Pro I haven’t felt the urge in years.

                                                                                                                                                                                                                      When the point comes back to switch to a non-Apple laptop with Linux, I’d probably get a refurbished ThinkPad or something like that.

                                                                                                                                                                                                                    2. 5

                                                                                                                                                                                                                      It’s reasonably priced for what you get, in fact there’s nothing to compare it to in the PC space.

                                                                                                                                                                                                                      The last non-Apple laptop I used was a ThinkPad X1 Carbon (Gen. 4 I think) where I ran Arch Linux on. The ThinkPad cost three times as much as a M1B Air, but suffered from CPU throttling, loud fan noise, sub 3.5h battery life, and various hardware issues that led to a complete freeze of the machine.

                                                                                                                                                                                                                      I bought an M1 MacBook Air in late 2020 and have no real reason to upgrade since then, battery still lasts for 8h, it’s dead silent because its fanless, and I can charge it with any random usb-c phone charger if I need to! I’ve been a die hard Linux user before switching to Apple, but those M-chip MacBooks are so good that they play in a completely different league and I can’t imagine going back to a Lenovo or Dell laptop.

                                                                                                                                                                                                                      1. 4

                                                                                                                                                                                                                        I only buy refurbished laptops. +1000e laptop for 300e? Yes please.

                                                                                                                                                                                                                        1. 4

                                                                                                                                                                                                                          Mine cost $3500. It’s a System76, not Apple. It’s amazing. I don’t know how I would ever be satisfied with the specs of something that’s less than a grand.

                                                                                                                                                                                                                          1. 4

                                                                                                                                                                                                                            Yeah, I’ve never spent more than $500 USD on a laptop. My first laptop was one of the 15” IBM Thinkpad models, $150 (used) and it lasted 3 years before starting to freeze up when its motherboard flexed a bit from picking it up. After that got a $200 new one, Lenovo branded Atom netbook called an IdeaPad, about 11”, and got 3 more years out of that one - and kinda technically i still have it and it still works ok for some things, but a new job made me do video calls and it was just too slow; the calls would lag out.

                                                                                                                                                                                                                            Then I bought a $360 laptop, again Lenovo, its model number sticker came off, but it is not one of the think/pad things, just some number… and it worked for 9 years of daily on-battery use (the battery would last about 3-4 hours at a time). I did buy it more RAM and an SSD totaling about $140 more on it over the years, which made a big difference, so total of about 500. My kid stepped on the screen and snapped a plastic support so the left side of the laptop is floppy now… and the battery started getting only an hour use out of it anyway, so I bought another $400 one. (I still have that old one on my desk because it has so many files and programs installed that I still want periodically, but it hasn’t been a daily use laptop for almost two years now.)

                                                                                                                                                                                                                            The new one is a HP Probook, I got it slightly used from a going-out-of-business sale. Been very happy with it so far - it feels like HP’s clone of the Apple Macbook, 13” screen, fancy lightup keyboard, similar size, shape, color, even the keyboard seems similar to a macbook air. Get about 6 hours out of a battery charge and it goes to sleep / wakes up very quickly too. I don’t know what this model cost new, but I can’t complain at all. Had it for two years now, so we’ll see on longevity, but zero issues; it still feels new.

                                                                                                                                                                                                                            My policy was I’d get cheap laptops because odds are something would happen and they’d break anyway, so might as well make the pain of replacement less….. but the reality has exceeded my expectations. I like this HP a lot, the smaller size and weight compared to those 15” ones is lovely. Maybe in a decade (hopefully!) i’ll even fork out for one of these new.

                                                                                                                                                                                                                            1. 3

                                                                                                                                                                                                                              This is a lot closer to my experience. Get something that was real expensive when a business bought it a few years ago when they start replacing that model in their fleet.

                                                                                                                                                                                                                            2. 3

                                                                                                                                                                                                                              These are European prices, they really aren’t comparable to aus or usa for purchasing power. I would also be very very skeptical for anything under 1000 euro. Sure you can get something, but nothing in the “nice” category.

                                                                                                                                                                                                                              1. 16

                                                                                                                                                                                                                                European here. €950 is a big sum of money; most people wouldn’t dream of spending that much on a laptop. You can (and should) expect something decent for that price.

                                                                                                                                                                                                                                1. 6

                                                                                                                                                                                                                                  I mean doesn’t this depend? I imagine people in Germany or Ireland have less of a problem paying 950€ for a laptop, but that number is unimaginable in Portugal or Greece. Purchasing power in the eurozone is heavily varied.

                                                                                                                                                                                                                                  1. 6

                                                                                                                                                                                                                                    In Germany this would be 1mo of rent. Compared to say SF where it would be 0.2mo of rent. That is a big difference in purchasing power as well.

                                                                                                                                                                                                                                    1. 2

                                                                                                                                                                                                                                      Prices for identical laptops tend to be more or less the same in the EU (or you’d see a lot more grey import). And €950 is a serious chunk of money even in the richest EU member states.

                                                                                                                                                                                                                                      1. 4

                                                                                                                                                                                                                                        Really? I know a lot of non-tech people who buy the entry-level MacBook Air (or upgraded to 512GB or 1TB storage) in The Netherlands (given your username, I guess you might also be from NL?). It’s fairly cheap relative to what people spend on cars, etc. Also almost 40% of the population owns an iPhone, which is close to a MacBook Air price-wise.

                                                                                                                                                                                                                                        iPhones, MacBooks, etc. are very common in the richest EU states. If you go to a library, you’ll see that even a lot of students use MacBooks.

                                                                                                                                                                                                                                    2. 5

                                                                                                                                                                                                                                      My work laptop (HP Elitebook) costs 150% of that and is a less nice machine in many ways than my M1 Air. Battery ife especially is atrocious.

                                                                                                                                                                                                                                      (I’m in Sweden)

                                                                                                                                                                                                                                      1. 4

                                                                                                                                                                                                                                        Your work laptop was paid by an organization that gets to write off the expense, and is minimally invested in the user experience of the device :)

                                                                                                                                                                                                                                        1. 8

                                                                                                                                                                                                                                          Your work laptop was paid by an organization that gets to write off the expense,

                                                                                                                                                                                                                                          That’s not how it works. They didn’t have to pay VAT on it, but it still costs them money…

                                                                                                                                                                                                                                          1. 4

                                                                                                                                                                                                                                            Yeah, I’m very happy I get a better product for less when I spend my own money.

                                                                                                                                                                                                                                            My point is that this thread is full of statements like “there are better laptops out there”, but there are very few links actually supporting that statement. Please note that a used Thinkpad running Linux is not comparable to a NIB Macbook Air in this case. It has to be something a consumer can buy online or in a big box store.

                                                                                                                                                                                                                                            1. 2

                                                                                                                                                                                                                                              It has to be something a consumer can buy online or in a big box store.

                                                                                                                                                                                                                                              Why? The author is apparently a ‘Senior DevOps engineer’, and the typical lobste.rs user is also not one who is primarily convenience-focused?

                                                                                                                                                                                                                                              Also, the point of contention is not that there are better laptops out there, but that you should expect a €950 laptop to be crappy.

                                                                                                                                                                                                                                            2. 1

                                                                                                                                                                                                                                              Yes, and I’ve always had better equipment and a better working environment at home, paid for with my own money, than any employer has provided me with.

                                                                                                                                                                                                                                          2. 1

                                                                                                                                                                                                                                            Prices in Europe vary quite a lot, you can’t really speak on behalf of all of Europe.

                                                                                                                                                                                                                                            1. 1

                                                                                                                                                                                                                                              And neither can the person I was responding to.

                                                                                                                                                                                                                                              1. 1

                                                                                                                                                                                                                                                Two wrongs doesn’t make a right.

                                                                                                                                                                                                                                        2. 3

                                                                                                                                                                                                                                          agreed, my daily driver cost refurbished 160 EUR (Thinkpad x250) and I consider it the best machine I ever had (including a m1), on par with a 13” macbook unibody late 2008 (snow)leopard.

                                                                                                                                                                                                                                          I don’t care too much which end the machine is - high or low - as long it’s a means to my end.

                                                                                                                                                                                                                                          1. 2

                                                                                                                                                                                                                                            The UK has 20% VAT, so you need to account for that.