1. 2

    I’m sure I’ve played a variation of this game before. I never knew the form had such history.

    1. 3

      The game was ported to FOCAL in 1968, and became known under the names “King of Sumeria” and “The Sumer Game”. David H. Ahl ported it to BASIC in 1973 for his book 101 BASIC Computer Games (as “Hammurabi”, often written with only one “m”, due to 8+3).

      1. 3

        Right, the article said as much. I think I played a version in a browser, maybe a sci fi setting?

    1. 7

      You can have type level programming without distinguishing between type level programming and value level programming. Dependent types achieves this, by making types and values live in the same namespace.

      1. 1

        Do you have any favorite examples?

        1. 6

          Dependent types make stuff like type families, GADTs and kinds obsolete, which are all special-cased in Haskell today.

          So since we’re talking about removing code, I it is weird to bring an example. But really just take any arbitrary type family, and that can serve as an example.

          A function like this has to be written using a type family or GADT in Haskell:

          the (Bool -> Type) (\x => if x then Float else Int)
          

          (this is Idris syntax)

          1. 2

            Does that mean Zig has some form of dependent types?

            fn the(x: bool) type {
                return if (x) f64 else i64;
            }
            
            pub fn main() void {
                @import("std").debug.warn("wee " ++ @typeName(the(true)));
            }
            
            1. 4

              I would say that Zig does have dependent types, but it’s dependent type system is “unsound”, in the sense that a function call can type check in one use case but might fail type checking in another use case, due to how types are only checked after use and monomorphization. It’s arguably better than not having them at all, though, and I think that’s born out in practice.

              It certainly limits the value of dependent types, though. You can’t reliably use Zig’s type system as a proof assistant in the way that you can use Coq’s, Agda’s, or Idris’s.

              1. 2
        1. 7

          Working in a mobile-and-otherwise dev company of many projects and teams, the anecdote about Swift protocol-based code rings very true. Many enthusiastic Swift developers are tempted to use the most exotic corner of the language to accomplish anything. I’ve observed the same happening in TypeScript. It’s a struggle to get people to consider all their options and pick the simplest one (“Could this just be a function?”). What those interesting features exist to do is solve the problems that plain functions and objects don’t already solve just as well.

          There was once a WWDC talk that included the advice, “start with a protocol.” Later, when it was clear that had created a mess, there was another WWDC talk exhorting Swift developers not to take that line so literally.

          1. 2

            Yeah, I was coming here to say the same thing. Coming from a recently-mostly-Swift perspective, the part about Swift sounded familiar. I don’t think protocols are quite a feature of last resort, but most of the time you get by just fine without them, and at the same time you get to not worry about a bunch of surprises and design traps.

            1. 3

              Protocols are indeed useful at least as frequently as interfaces in regular OO languages. Just, not every function needs to be in a protocol extension, or a system framework type extension for that matter. Often all that does is change which argument gets to be self. Many discussions in our Slack have begun with a question about how to handle some difficult corner of protocols with associated types, and we’ve then discovered it wasn’t necessary to go down the road that led there. I sometimes challenge people to make it a free function, get it working, and only then determine which type would most idiomatically contain it as a method.

              1. 1

                I often find this rule is useful: protocol is only needed if you have two things want to conform to it.

                Swift tries to orient you to struct / protocol based programming, but mostly, it is still quite OO and thinking through protocol / struct lens can be counter-productive.

                At the end of the day, if you need to use open class with generics, just go for it, write it down, and if you are not happy, can always improve from there with fancier things (protocols, PATs, property wrappers, function builders …).

          1. 2

            The author pronounces it [aɡe̞], like the Italian “aghe”.

            Does the author mean aghi? Aghe is not an Itailan word.

            Now I am confused. Is the pronunciation as ah-gee (as you would say aghi in Italian) or ah-geh (as you would pronounce aghe in Italian if that were a word)?

            1. 3

              It seems unlikely to me that the majority of people who encounter this library at its point of use will think to investigate how it’s pronounced. I expect most will assume it’s the English word. Naming things is hard; there are many pitfalls.

              1. 3

                I’m also confused. It links to google translate which translates it to “needles”, but I’ve never heard the word pluralized like that. I’m guessing it comes from FiloSottile’s dialect.

                1. 1

                  I think I just got it. The link to google translate is there so you can play the pronunciation and not to translate it to English. I guess that’s helpful for everyone that is not Italian, lol.

                2. 2

                  The latter. I’m sure he used to describe it as pronounced the Japanese way, but perhaps even fewer people understand that :-)

                  1. 1

                    I also thought was pronounced like in chicken karaage. However, I now suspect I pronounce that wrong also since I say “ah-hey” rather than “ah-geh”

                    1. 3

                      Heh yeah, for the record you’re pronouncing it wrong - a mora consisting of a g followed by any vowel is always a hard G sound in Japanese.

                      So it’s kah-rah-ah-geh (more or less, in a standardish American accent, although with no aspiration because those Hs are just there to steer you towards the right vowel sound, and with the vowel sounds held for a somewhat shorter period of time than you might default to)

                1. 2

                  I was skeptical of Pulumi at first because HCL is at least a declarative language, which has a number of benefits. But an F# example convinced me you could likely use Pulumi in an entirely declarative way.

                  1. 2

                    Could likely use is the kind of expression that continues to make me want to force HCL on everyone I have to work with. I think declarative code and IaC are tightly bound for reproducibility and reliability purposes.

                  1. 6

                    This is a great analysis, but I think it’s missing something: Cross-platform toolkits are not themselves written on top of cross-platform toolkits. They have to be ported to every platform and often lack some features on some platforms. This is a bit easier if you’re restricting yourself to Windows/Mac/X11+Linux, but it gets harder if you add Wayland+Linux or X11+FreeBSD to the mix. It gets much harder if you add iOS and Android to the mix because both of them have a very different set of core platform abstractions to the others.

                    Last time I checked, Electron supported only desktop operating system, so you still need different iOS and Android applications. If you’re developing an iOS application then Catalyst makes it pretty trivial to also build a Mac version. Maybe it’s easier to sell different feature levels for mobile vs desktop, but as mobile devices become more featureful that’s harder to justify. If you maintain parity between your mobile and desktop versions then the Mac version built with Catalyst will be more popular with your users than one built with Electron.

                    One of the big problems with the cross-platform tooling is that you’re at the mercy of the vendor for the set of platforms that you can support. Want to add ChromeOS support? Sorry, Electron can’t target ChromeOS, you need to have your users run effectively a separate Linux install via Crostini. Fine if you’re something like VS Code and you’re targeting programmers, much less fine if you’re something like Spotify. You might be able to easily target it natively if the Electron version is just a thin wrapper around your web version, but if you’ve used anything Electron-specific or if you depend on the Node bits for some local code, then good luck. If a Google device running Fuchsia suddenly becomes mainstream, how quickly can you target it?

                    1. 5

                      I don’t agree with you.

                      The pretty common thing that works for a lot of people is to ship Electron on desktop and one of (Cordova, React Native, Xamarin, Fuschia) on iOS and Android. An Android phone and an iPhone are much more similar to one another from a design perspective (how big the screen is, how far away from your face do you hold it, how big do the buttons have to be to reliably hit them) then a Mac and an iPhone.

                      If you’re doing PWA, responsive design & making all features work on the web first, then this gets real straightforward. Ship Electron on the desktop, the app as-is on the web and (one of the Cordova clones) on phones. The platform specific parts are now a tiny proportion of your codebase.

                      Even if you aren’t doing that, having fewer silos (desktop, web, mobile) instead of 6+ silos (Android, iOS, Mac, Windows, Linux, toasters with m68k chips in, website) is a huge reduction in coordination costs.

                      often lack some features on some platforms

                      While a major hassle, this isn’t a coordination problem, which is what the article actually talks about. When you’re doing e.g. React Native development, you do not have siloed teams for Android and iOS, there’s just one team. You have a single codebase with 2 builds. The same people are testing and developing and noticing the bugs on both platforms.

                      1. 2

                        In practice, Xamarin, React Native, et al still take a layer of native code per platform, and teams in my experience still have Android and iOS specialists to do that work. They do coordinate because they need to agree on shared code, but they tend to silo themselves by specialty. Everyone needs to know another SDK, but they don’t get to forget native tooling. In a sense you have one codebase, but in a sense you have two codebases and a library in three languages. Even then the best place for shared code is often an API, so how much does shared local code buy? I generally don’t observe time savings versus two fully native apps; the total effort is about the same.

                        For me, where the article is strongest is in its point about the diminishing returns of separate implementations on very complex apps. That rings true.

                        1. 7

                          Eli Bendersky once wrote “the benefit of dependencies is inversely proportional to the amount of effort spent on a software project.” I think that really is true. For a sufficiently complex series of apps, you’re better off writing your own crossplatform layer than relying on someone else’s… but the bar for sufficient complexity is very high.

                          1. 2

                            Maybe submit that article, that is fantastic.

                          2. 3

                            In practice, Xamarin, React Native, et al still take a layer of native code per platform, and teams in my experience still have Android and iOS specialists to do that work. They do coordinate because they need to agree on shared code, but they tend to silo themselves by specialty.

                            My experience with RN for the last few years has been that the native code is a small proportion of the code base and we have seen a cessation of siloing.

                            There’s a huge envelope of boring line of business applications where you can work entirely in RN with a handful of off-the-shelf libraries that extend the platform. The OS-specific parts end up being dealing with platform specific bugs in those libraries.

                            1. 2

                              Yes, especially with the availability of Expo this has been my experience as well.

                              1. 1

                                My boss evaluated Expo a few years ago and found it untenable due to bugginess/instability, if I remember correctly. Now this year we’re looking at moving to defaulting to working in Expo whenever possible because Expo has gotten so much better, and the productivity improvement is delightful.

                      1. 3

                        Why Electron apps are fine

                        Fine for the author. It’s OK for each of us to have our own standards, and there’s no reason you should lower your standards just because many users don’t care about what you care about.

                        1. 25

                          Nope. I would say that client TLS certificates are the most underused browser feature.

                          1. 5

                            Mercifully so! Client certs are a UX disaster.

                            1. 7

                              I don’t find that to be true, but even if it were that’s a reason to invest in the UX, not abandon the tech.

                            2. 4

                              Huh – I was thinking control-Q.

                              1. 4

                                Sadly not, as it’s right next to control-W.

                                1. 2

                                  I always need to download a Firefox add-on to fix that screwup.

                                  Why is this still a thing?

                                  1. 1

                                    I’ll hazard a guess that it comes from Mac OS where ⌘W is Close Window (or close tab if there are tabs, for the past decade or two) because it’s next to ⌘Q, Quit an application.

                                    1. 1

                                      There’s a setting you can toggle in about:config to disable this behavior: https://bugzilla.mozilla.org/show_bug.cgi?id=52821#c315

                                      1. 1

                                        Wow, that’s quite the discussion and it started 21 years ago!

                              1. 4

                                I use reader mode all the time. Lately I’ve set it to be on by default; it’s overridable per site or per visit.

                                1. 18

                                  I’m so excited about this trend.

                                  Something I think the JavaScript development world doesn’t really take into account is the burden all of their build tooling puts on us occasional JavaScript developers.

                                  I mainly work in Python, but I work on JavaScript maybe once a month - which is just infrequently enough that I’ve never managed to build a permanent mental model of how all of the JS build tooling works.

                                  As a result, it feels like every single time I have to interact with Webpack (or its many peers) something has changed or I’ve forgotten a step and as a result stuff breaks.

                                  This makes revisiting older projects an exercise in frustration!

                                  I imagine if you are a full-time JavaScript developer immersed in that ecosystem this problem fades, since you work with it every day.

                                  1. 3

                                    I imagine if you are a full-time JavaScript developer immersed in that ecosystem this problem fades, since you work with it every day.

                                    It fades if you keep working in the same stack of tools atop JS. A new project often means the same hurdles, just with a contextual leg up. Even a new major version of a stack component like Next.JS can mean you need to cope with changes in other components they bake in but still affect you.

                                    And to bring it full circle, the unusually high depth of packages importing packages in NPM has to do with the fact that baseline JS offered very little in terms of standard features, so small libraries like left-pad would be imported and depended on instead of deemed trivial. Improve the baseline and you can cut out a lot.

                                    1. 2

                                      Yep. I have a personal site that I work on. It’s mostly static, with a few APIs and a few key generated files, with hand-written HTML and CSS and vanilla JS. It works fine, and it’s basically unbreakable, but I would like to add some new features. Those new features want new libraries. And those libraries are very “oh, just add this to your packer”. I don’t have a build process or any of the stuff that they expect me to have, I’ve been out of mainstream web dev for 10 years, and I don’t have the time to learn how to get from my current state (“works great”) to a new state of “works hopefully almost as good but is usable as a base for all this new shit” because it’s an unpaid side project.

                                    1. 2

                                      Being able to program using this much better JavaScript

                                      Genuine question: did programming in JavaScript really change that much? Is ES6+ really “much better”? If Iook back at ES6 in hindsight, the only thing that really brought an improvement is async/await. Everything else turned out to be just another way of expressing something that’s already there. I’ve got the feeling my entire team finds itself writing a more old school flavor of JS each day, soon we’ll be back in 2012. Plus async.

                                      N.B.: I do enjoy writing JavaScript, both 10 years ago and today so this is not supposed to be a slur.

                                      1. 13

                                        I’m not sure which versions introduced which features, but between the time I left JS and returned to it, they added for…of loops, const and let, arrow functions, and class syntax. Each of these made a big difference to me.

                                        1. 6

                                          Also Map, promises and then async…

                                          1. 3

                                            Do you know which ES6 feature got pulled but I wanted? Tail call optimization. Not supporting it because debuggers would be ‘harder’ was pretty weak–which oddly means only WebKit supports it. Entire styles of application building could be unlocked with it.

                                        2. 3

                                          Here’s a list of features, you can also check what will be missing without compilation by checking 2016+ tab https://kangax.github.io/compat-table/es6/

                                        1. 2

                                          It can be helpful to build the UserMethod first, expose it in a Command Palette or via Keyboard Shortcut Interface, and only if it then proves to be useful, design it into the GUI.

                                          This is not far from standard macOS practice: Everything the user can do belongs in the menu bar, each menu item is handled somewhere by a method, and those methods follow a conventional pattern. Only the most important commands also appear in always-visible UI, like a toolbar button, and some others may be progressively disclosed. But the menu bar is the index.

                                          1. 1

                                            If I had to bet on where I picked up this pattern, it’s probably from Apple land. Would not be surprised if in old code from the 80’s. Anyone know what the terms of art for this parttern are amongst Objective C/Swift programmers?

                                            1. 2

                                              I think you’d call them action methods. The target-action pattern is one way they’re called. The token “IBAction” identifies action methods for you to wire up in Interface Builder. Targets can be particular objects or the first responder, and the responder chain is implicit beyond that target.

                                              For example and IIRC, the Copy menu item will be bound with the target-action pattern to the -copy: action on the first responder target. When you select Copy from the menu or type ⌘C, the event dispatch will first call the view with typing focus, then if it doesn’t respond (doesn’t implement that method) it recurses to its next responder (superview, usually). A variant of this check is also done when you open the menu. The Copy action will be enabled only if some object on the responder chain responds to -copy:.

                                          1. 2

                                            Funny, I’ve never called the index “the staging area,” though I did somehow get into the habit of calling it “the stage,” and using the term “stage” as if it meant a staging area.

                                            1. 1

                                              Still no icons on the desktop …

                                              1. 17

                                                What do you mean “still”? This is obviously a design decision, not just something they couldn’t yet find time to get to.

                                                1. 6

                                                  They’re onto something. My Mac desktop is perpetually full of random disorganized files that I occasionally dump into “old” folders, creating sediment layers of garbage.

                                                  1. 4

                                                    It’s one of those things that either work for you or they don’t. And it looks like there’s enough people in both camps to not let there be one correct solution.

                                                    My desktop is basically a temp/work/todo space with a handful of things that never get out of control. A matter of habit.

                                                    1. 2

                                                      Yeah, I really hate the forced no-desktop design of some DEs (GNOME & Pantheon). Why can’t they just have an option to enable/disable the desktop like in Windows? I also like to drag temporary files to my desktop and I pretty consistently tidy them up. I find not being able to use a desktop really hinders my workflow

                                                      1. 1

                                                        It’s one of those things that either work for you or they don’t.

                                                        Funny that you say that. I used to be 100% strict “desktop is clean and minimal” for like 20 years, and only in the last few years it’s been a dump of temp things and screenshots. Only on Windows (private, games) though, where I don’t have a shell open all day like on a work machine

                                                      2. 1

                                                        I like to make the desktop icons uncomfortably large. It motivates me to clean them up.

                                                        1. 1

                                                          On the first of the month, I try to go through and clean up my desktop, downloads folder, and tabs. It’s better than before but still inconsistent.

                                                      3. 2

                                                        For a desktop system that seems the most stupid decision you can make …

                                                        I have tried to put elementaryOS on my buddy’s laptop - he really liked it but really missed the icons on the desktop - so I installed caja and thunar to enable them by hand. The whole ‘experience’ went to trash as caja or thunar ‘desktop icons’ are not well integrated into elementaryOS DE …

                                                        I have put Ubuntu Mate with ‘Cupertino’ layout to him instead and e could not be happier.

                                                        I am not a ‘target’ for elementaryOS so I do not care that much but IMHO they lose a lot of ‘typical’ desktop users that have used icons on the desktop since decades.

                                                        Just my $0.02 here.

                                                    1. 1

                                                      The confusion and misunderstanding around this issue is far out. Apple spends so much effort designing software to be approachable and understood, but their communication around these features has been dismissed by many people and not understood. I have to imagine there’s a better way to introduce these features.

                                                      1. 2

                                                        Another merge into ihvn95.

                                                        (Again, I get the impression everyone talking about this is conflating multiple things and no one seems to be able to exactly describe it. See the Gruber post merged into the OP.)

                                                        1. 2

                                                          Agreed. This FAQ even begins by trying to disambiguate the two features.

                                                        1. 5

                                                          Separately, Apple plans to scan users’ encrypted messages for sexually explicit content as a child safety measure, which also alarmed privacy advocates.

                                                          Full stop. color me surprised… shoulda known better, but I wanted to believe.

                                                          1. 3

                                                            This quote is a little misleading due to being vague. “Apple plans to scan users’ encrypted messages” sounds like decrypting and reading all your messages on their servers where Apple employees can see. That’s not how it works. It’s not even part of the iMessage service; it’s in the Messages app itself.

                                                            1. 2

                                                              Thank you, I think the news is overblown. I have to remind myself that most news stories are largely embellished, if not totally devoid of factual evidence. Nevertheless, I am looking for privacy friendly alternatives, it’s a shame the fairphone isn’t sold directly in the US…

                                                          1. 4

                                                            This by far the scariest thing Apple will ever do. And of course it is al under the guise of “child safety” how can anyone dispute that?

                                                            This is making me sick. To think that any arbitrary image or message you send or recieve will be scanned by Apple… I just don’t understand how they can run ads claiming to be private while scanning every iPhone user’s content.

                                                            I will never own an iPhone, fuck Apple.

                                                            1. 4

                                                              To think that any arbitrary image or message you send or recieve will be scanned by Apple…

                                                              That’s not what is happening here. Only children whose parents opt them into the Message app’s new explicit content filter have Message scanning taking place and it is taking place locally. No communication with Apple. For adult users the only scanning taking place is hash matching if you upload a picture to iCloud against a database of known illegal content.

                                                              1. 2

                                                                For adult users the only scanning taking place is hash matching if you upload a picture to iCloud against a database of known illegal content.

                                                                Please tell me you aren’t defending this.

                                                                “Known illegal content” mean CSAM right now, but will eventually become anything the government or big tech finds to be undesirable. You can’t be that naive, can you?

                                                                This sets the stage for full blown device scans in the future and it cannot stand.

                                                                1. 2

                                                                  Please see my comment from yesterday for an overview of my position.

                                                              2. 1

                                                                To think that any arbitrary image or message you send or recieve will be scanned by Apple

                                                                I think it’s worth asking what you mean when you say “scanned by Apple.” It sounds like you mean scanned in the cloud on Apple servers where they can read it, but that’s not the case here.

                                                              1. 15

                                                                Please consider signing the open letter against these changes: https://appleprivacyletter.com/

                                                                1. 10

                                                                  Are you going to post an open letter for Microsoft, Google, DropBox, Facebook, Twitter, and all the other companies who have used the exact same database for this exact purpose for the last decade?

                                                                  1. 8

                                                                    Which provider has previously used this list against images that aren’t stored on their infrastructure?

                                                                    1. 4

                                                                      Images sent via iMessage are stored on Apple’s infrastructure.

                                                                      1. 1

                                                                        I think the question had implied “stored in plain text”. iMessage doesn’t do that.

                                                                        1. 6

                                                                          Right. So, every other provider has direct access to your photos, and scans for CSAM with their direct access. Apple, rather than give up their E2E messaging, has devised a privacy-preserving scheme to perform these scans directly on client devices.

                                                                          I really don’t understand how Apple is the bad guy here.

                                                                          1. 4

                                                                            Other providers that scan cleartext images are off the hook, because they’ve never had E2E privacy guarantee.

                                                                            [smart guy meme]: You can’t have encryption backdoor if you don’t have encryption.

                                                                            Apple’s E2E used to be a strong guarantee, but this scanning is a hole in it. Countries that have secret courts, gag orders, and national security letters can easily demand that Apple slip in a few more hashes. It’s not possible for anyone else to verify what these hashes actually match and where they came from. This is effectively an encryption backdoor.

                                                                      2. 3

                                                                        If I understood what I read, although the private set intersection is done on device, it’s only done for photos that are synced with iCloud Photo Library.

                                                                        1. 2

                                                                          Apologies to all in this thread. Like many I originally misunderstood what Apple was doing. This post was based on that misunderstanding, and now I’m not sure what to do about it. Disowning feels like the opposite of acknowledging my mistake, but now I have 8 voted based on being a dumbass 🙁

                                                                          1. 2

                                                                            iCloud Photos are stored on Apple infrastructure.

                                                                        2. 4

                                                                          This page gets the scope of scanning wrong in the second paragraph, so I’m not sure it’s well researched.

                                                                          1. 3

                                                                            how so? can you explain?

                                                                            “Apple’s proposed technology works by continuously monitoring all photos stored or shared on a user’s iPhone, iPad or Mac, and notifying the authorities if a certain number of objectionable photos is detected.”

                                                                            seems like an appropriate high-level description of what is being done, how is it wrong?

                                                                            1. 7

                                                                              I may be wrong but, from what I understood, a team of reviewers is notified to check manually the photos once a certain number of objectionable photos is detected, not the authorities… If (and only if) the team of reviewers agrees with the hashes matches, they notify the authorities.

                                                                              This is a detail but this introduces a manual verification before notifying the authorities, which is important.

                                                                              From MacRumors:

                                                                              Apple’s method works by identifying a known CSAM photo on device and then flagging it when it’s uploaded to ‌iCloud Photos‌ with an attached voucher. After a certain number of vouchers (aka flagged photos) have been uploaded to ‌iCloud Photos‌, Apple can interpret the vouchers and does a manual review. If CSAM content is found, the user account is disabled and the National Center for Missing and Exploited Children is notified.

                                                                              Link to the resource: https://www.macrumors.com/2021/08/05/apple-csam-detection-disabled-icloud-photos/

                                                                              1. 1

                                                                                Second paragraph of the AP article

                                                                                The tool designed to detected known images of child sexual abuse, called “neuralMatch,” will scan images before they are uploaded to iCloud

                                                                                This resource from Apple also states that only images uploaded to iCloud are scanned.

                                                                                1. 2

                                                                                  This quote you cite figures nowhere within the page.

                                                                                2. 1

                                                                                  Apple’s proposed technology works by continuously monitoring photos saved or shared on the user’s iPhone, iPad, or Mac.

                                                                                  Only photos uploaded to iCloud Photos are matched against known hashes.

                                                                              2. 4

                                                                                Or just don’t buy an Apple device. Do you really think a trillion dollar company cares about digital signatures?

                                                                                1. 6

                                                                                  I think this is a good statement of intent though.

                                                                                  I just bought an iPhone 12 and would be otherwise unlikely to be noticed as a lost sale until the iPhone 14~ since most people don’t upgrade a single minor version.

                                                                                  Giving them warning that they have lost me as a customer because of this is a good signal for them. If they choose not to listen then that’s fine, they made a choice.

                                                                                  Also the more noise we make as a community; the more this topic gains attention from those not in the industry.

                                                                                  1. 4

                                                                                    I didn’t mean to make some sort of “statement” to Apple. I find that idea laughable. What I meant is that if you are really concerned about your privacy to the point where scanning for illegal images is “threaten[ing] to undermine fundamental privacy protections” (which I think is reasonable), then why buy Apple in the first place? This isn’t the first time they have violated their users’ privacy, and it certainly wont be the last.

                                                                                    1. 6

                                                                                      What’s your proposed alternative?

                                                                                      I think Apple making a stance on privacy, often posturing about it a lot, does cause a lot of good will and generally those who prefer to maintain privacy have been buying their products. (myself included). You can argue that it’s folly but the alternatives are akin to growing your own vegetables on a plot of land in the middle of nowhere connected to no grid (a-la rooted android phones with f-droid) or google owned devices which have a significantly worse privacy track record.

                                                                                      1. 2

                                                                                        You oughta update your intel about the “alternative” smartphone space. Things have come a long way from “growing your own vegetables on a plot of land in the middle of nowhere connected to no grid.” The big two user-friendly options are CalyxOS and LineageOS with microG. If you don’t feel like installing an OS yourself, the Calyx Institute, the 501(c)(3) nonprofit which develops CalyxOS, even offers the Pixel 4a with CalyxOS preinstalled for about $600.

                                                                                        I’m running LineageOS on a OnePlus 6T, and everything works, even banking apps. The experience is somewhere between “nearly identical” and “somewhat improved” relative to that of the operating system which came with the phone. I think the local optimum between privacy-friendliness and user-friendliness in the smartphone world is more obvious than ever, and iOS sure ain’t it these days.

                                                                                      2. 2

                                                                                        It does seem folly to make a statement by not buying something, but consider this: When you vote, there are myriad ways that politicians have to dilute your impact (not going to enumerate them here but it’s easy to do). By comparison, when you make an economic choice, ever dollar is counted in full, one way or another. So if you vote, and you should, then there’s every reason to vote with your pocketbook as well.

                                                                                1. 1

                                                                                  I personally love that they take pains to clarify which is the TI-99/4A and which is its peripheral box, as if speaking to an audience that hasn’t seen a computer before. :)

                                                                                  1. 2

                                                                                    It made a difference to me. I remember setting jumpers on a Sound Blaster or two, but I would have assumed the CPU was in the bigger box.