EmilyIsTrans

joined 2 years ago
MODERATOR OF
[–] EmilyIsTrans@lemmy.blahaj.zone 14 points 1 year ago* (last edited 1 year ago)

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.

[–] EmilyIsTrans@lemmy.blahaj.zone 44 points 1 year ago* (last edited 1 year ago) (2 children)

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.

I'm a big fan of my safety razor, though, now that I have softer skin, it's way harder to avoid razor burn

I'm not claiming that democracies have some literal obligation to support or promote democracy elsewhere, just that it is, like you said, hypocritical when to claim to support the tenants and ideals of democracy while actively suppressing it elsewhere

[–] EmilyIsTrans@lemmy.blahaj.zone 2 points 1 year ago (3 children)

Because overthrowing democracies and replacing them with dictatorships is not exactly in line with their rhetoric? Because it's hard to vote in elections when you've been killed in a drone strike?

[–] EmilyIsTrans@lemmy.blahaj.zone -5 points 1 year ago (5 children)

But it is contradictory

[–] EmilyIsTrans@lemmy.blahaj.zone 8 points 1 year ago* (last edited 1 year ago) (2 children)

Going to queer events and making new friends would be a great way to expand your support network. Depending on the size of your town, you're probably going to run into the same people pretty often and you'll get to know them over time.

As for the rest, you absolutely do "deserve" to come out, but I do relate to you. I came out to my friends pretty quickly, but held off more broadly for the same reason you did. I regret that decision, and I wish I had realised at the time that, for some people, you will never pass enough, be doing enough, "deserve" enough to be out. They will keep raising the bar until it can never be reached. Your "friend" has already given you a taste of that. You're coming out for yourself, because the alternative is suffocating. Do it when you feel safe and ready, but don't wait until everyone else thinks you're worthy.

[–] EmilyIsTrans@lemmy.blahaj.zone 11 points 1 year ago (1 children)

If by conversation you mean asking for a word by describing it conceptually because I can't remember, every day. If you mean telling it about my day and hobbies, never.

Sorry to hear your order didn't go through! I'm not really familiar with any options, but you might have some luck if you made a new thread asking for recommendations and advice?

My immediate family is probably about a 2. They're reasonably accepting and "believe" in it, but are pretty suspicious that I am trans and don't use my name or pronouns. The rest vary, some surprised me with how accepting they were, others were about as bad as I expected :/

[–] EmilyIsTrans@lemmy.blahaj.zone 28 points 1 year ago (4 children)

Guy's profile picture is literally of Joseph Goebbels. I don't think their opinion has much weight, nor are they worth spending time arguing with

I saw this headline earlier, except they chose to exclude any mention that the girl was Palestinian-American, or Muslim (example).

view more: ‹ prev next ›