I am several hundred opossums in a trench coat

  • 0 Posts
  • 24 Comments
Joined 1 year ago
cake
Cake day: July 1st, 2023

help-circle
  • Ok rather than responding in kind with some snarky comment, I’m going to make a good faith effort explain what I mean.

    My statement that “beauty standards are based in white supremacy” is talking about what we, as a whole society, consider attractive. I am not talking about your personal taste, I am talking about the kinds of bodies, faces, and styles that are elevated in society and pointing our their basis in white supremacy.

    Firstly, we need to understand that beauty standards are not some platonic ideal of beauty, they are socially constructed and therefore informed by the society in which they exist. This also necessarily means that current standards are an evolution of historical standards, reciprocally changing as people both influence the standards and are influenced by them.

    That means that if we want to understand today’s beauty standards, we also need to consider them in a historical context. I hope it is not a controversial point to say that most white countries (i.e. Australia where I live, and the US where much of the discussion often centres) were historically white supremacist (if not presently, but that is a different can of worms). Like they openly stated it (i.e. “White Australia” being official policy) and legally elevated whites, this isn’t up for discussion. I would hope it is not difficult to imagine that such a society would also base its definitions of beauty around white features: white skin, white facial features, blonde hair, etc. A cliche example of this would be the historical masculinization of African-American people and their bodies. Pernicious stereotypes like “Jezebel”, “Sapphire”, and more modern incarnations like “Angry Black Woman” are prime examples of this, where black women are given qualities or cast into roles considered, in a societal context, incompatible with femininity or even outright masculine.

    Therefore, to evaluate my claim that beauty standards are “based in white supremacy”, we need to determine whether our standards have substantially deviated from that history. I would argue it has not, that our beauty standards are clearly descendant. To look at the modelling industry as a prominent signifier, even with notional improvements in the diversity of models, the presence of eurocentric features is largely maintained (see 1, 2, 3). That is not to say there isn’t work, particularly from passionate activists, to move on from this history - but we are not there yet.

    Finally, in regards to this entire thread, I want to point out that, due to the global hegemonic nature of whiteness - historically and presently - to some uneducated eyes the premise of my argument here - that beauty standards are not objective but subjective and socially constructed - may be dismissed out of hand. A naive look at other prominent non-white cultures that attempt to recreate the aesthetics of white beauty standards (i.e. skin lightening products in south-east asia) could appear to suggest that they may be formed from an objective standpoint. This is patently and obviously untrue. Other cultures and periods of time had extremely varied beauty standards to those we have today, and it is a blatant case of presentism and ignorance to assume that our particular version is “correct”. We should be skeptical of claims that, unlike so many other aspects of society, beauty standards alone are not impacted by the global history of colonialism and the dominance of white countries globally.




  • Not every change is going to completely overhaul the app. More than likely, the changes are a fix to some obscure bug not caught in testing that only affects a small percentage of devices. Just because you don’t encounter it with your workflow and device doesn’t mean it isn’t a critical bug preventing someone from using the app. It could also be a new feature targeting a different use case to yours. It could even be as simple as bringing the app into compliance with new platform requirements or government regulations (which can happen a couple times a year, for example Android often bumps the minimum SDK target such that apps are forced to comply with new privacy improvements).





  • After a certain point, learning to code (in the context of application development) becomes less about the lines of code themselves and more about structure and design. In my experience, LLMs can spit out well formatted and reasonably functional short code snippets, with the caveate that it sometimes misunderstands you or if you’re writing ui code, makes very strange decisions (since it has no special/visual reasoning).

    Anyone a year or two of practice can write mostly clean code like an LLM. But most codebases are longer than 100 lines long, and your job is to structure that program and introduce patterns to make it maintainable. LLMs can’t do that, and only you can (and you can’t skip learning to code to just get on to architecture and patterns)




  • I suspect that any of the methods proposed here would be prone to a C&D, but IMO the safest legally would probably be the RSS method (not a lawyer though). Reddit’s RSS feeds are public, documented, and available without the need for private APIs, authentication, or an API key, so I don’t see how they could claim that a wrapper is unauthorised/illegal. Documenting their private API however seems like a gray area. Google LLC v. Oracle America, Inc. found that APIs are copyrightable, but this use may constitute fair use.



  • Thank you for adding this! If people want a real life example of the effect shown in this pseudocode, here is a side-by-side comparison of real production code I wrote and it’s decompiled counterpart:

        override fun process(event: MapStateEvent) {
            when(event) {
                is MapStateEvent.LassoButtonClicked -> {
                    action(
                        MapStateAction.LassoButtonSelected(false),
                        MapStateAction.Transition(BrowseMapState::class.java)
                    )
                }
                is MapStateEvent.SaveSearchClicked -> {
                    save(event.name)
                }
                // Propagated from the previous level
                is MapStateEvent.LassoCursorLifted -> {
                    load(event.line + event.line.first())
                }
                is MapStateEvent.ClusterClick -> {
                    when (val action = ClusterHelper.handleClick(event.cluster)) {
                        is ClusterHelper.Action.OpenBottomDialog ->
                            action(MapStateAction.OpenBottomDialog(action.items))
                        is ClusterHelper.Action.AnimateCamera ->
                            action(MapStateAction.AnimateCamera(action.animation))
                    }
                }
                is MapStateEvent.ClusterItemClick -> {
                    action(
                        MapStateAction.OpenItem(event.item.proposal)
                    )
                }
                else -> {}
            }
        }
    

    decompiled:

        public void c(@l j jVar) {
            L.p(jVar, D.f10724I0);
            if (jVar instanceof j.c) {
                f(new i.h(false), new i.r(c.class, (j) null, 2, (C2498w) null));
            } else if (jVar instanceof j.e) {
                m(((j.e) jVar).f8620a);
            } else if (jVar instanceof j.d) {
                List<LatLng> list = ((j.d) jVar).f8619a;
                j(I.A4(list, I.w2(list)));
            } else if (jVar instanceof j.a) {
                d.a a7 = d.f8573a.a(((j.a) jVar).f8616a);
                if (a7 instanceof d.a.b) {
                    f(new i.j(((d.a.b) a7).f8575a));
                } else if (a7 instanceof d.a.C0058a) {
                    f(new i.a(((d.a.C0058a) a7).f8574a));
                }
            } else if (jVar instanceof j.b) {
                f(new i.k(((j.b) jVar).f8617a.f11799a));
            }
        }
    

    keep in mind, this was buried in hundreds of unlabeled classes and functions. I was only able to find this in a short amount of time because I have the most intimate knowledge of the code possible, having written it myself.


  • It’s not impossible, just very labour intensive and difficult. Compiling an abstract, high level language into machine code is not a reversible process. Even though there are already automated tools to “decompile” machine code back to a high level language, there is still a huge amount of information loss as nearly everything that made the code readable in the first place was stripped away in compilation. Comments? Gone. Function names? Gone. Class names? Gone. Type information? Probably also gone.

    Working through the decompiled code to bring it back into something readable (and thus something that can be worked with) is not something a lone “very smart person” can do in any reasonable time. It takes likely a team of smart people months of work (if not years) to understand the entire structure, as well as every function and piece of logic in the entire program. Once they’ve done that, they can’t even use their work directly, since to publish reconstructed code is copyright infringement. Instead, they need to write extremely detailed documentation about every aspect of the program, to be handed to another, completely isolated person who will then write a new program based off the logic and APIs detailed in the documentation. Only at that point do they have a legally usable reverse engineered program that they can then distribute or modify as needed.

    Doing this kind of reverse engineering takes a huge amount of effort and motivation, something that an app for 350 total sneakers is unlikely to warrant. AI can’t do it either, because they are incapable of the kind of novel deductive reasoning required for the task. Also, the CarThing has actually always been “open-source”, and people have already experimented with flashing custom firmware. You haven’t heard about it because people quickly realised there was no point - the CarThing is too underpowered to do much beyond its original use.





  • This is the comment that tipped the maintainer over the edge:

    ayan4m1

    You should do a better job updating your documentation so that people do not waste their time like I did. This change to closed source was announced where, exactly? All of your READMEs and documentation sites do not mention this. Very easy to be confused and very disappointing to me that this went closed-source.

    Not only did you sell out, you also removed all the old versions that were released under an open source license so that others couldn’t continue to use out-of-support versions. DISGUSTING.

    tl;dr get off GitHub and npm entirely if you want to do the closed-source thing, kthx.

    Which is incredibly disrespectful in my opinion, and this kind of entitlement is what makes me weary of starting any open source projects.



  • Likewise, an open source project can totally die if they refuse to engage with the needs of the users. The lack of moderation and content management tools have been a longstanding criticism of Lemmy, and instances will migrate to alternatives that address these concerns. It is a genuine legal liability for instance operators if they are unable to sufficiently delete CSAM/illegal content or comply with EU regulations.