mindbleach
I admire the concept behind Denuvo.
Programs bounce around between a ton of different code segments, and it doesnβt really matter how theyβre arranged within the binary. Some code even winds up repeated, when repetition is more efficient than jumping back and forth or checking a short loop. It doesnβt matter where the instructions are, so long as they do the right thing.
This machine code still tends to be clean, tight, and friendly toward reverse-engineeringβ¦ relatively speaking. Anything more complex than addition is an inscrutable mess to people who arenβt warped by years of computer science, but itβs just a puzzle with a known answer, and thereβs decades of tools for picking things apart and putting them back together. Scene groups donβt even need to unravel the whole program. Theyβre only looking for tricky details that will detect pirates and frustrate hackers. Eventually, they will find and defeat those checks.
So Denuvo does everything a hundred times over. Or a dozen. Or a thousand. Random chunks of code are decompiled, recompiled, transpiled, left incomplete, faked entirely, whatever. The whole thing is turned into a hot mess by a program that knows what each piece is supposed to be doing, and generally makes sure thatβs what happens. The CPU takes a squiggly scribbled path hither and yon but does all the right things in the right order. And sprinked throughout this eight-ton haystack are so many more needles, any of which might do slightly different things. The βattack surfaceβ against pirates becomes enormous. Theyβll still get through, eventually, but a crack delayed is a crack denied.
Unfortunately for us this also fucks up why computers are fast now.
Back in the single-digit-megahertz era, this wouldβve made no difference to anything, besides requiring more RAM for this bloated executables. 8- and 16-bit processors just go where theyβre told and encounter each instruction by complete surprise. Intel won the 32-bit era by cranking up clock speeds, which quickly outpaced RAM response times, leading to hideously clever cache-memory use, inside the CPU itself. Cache layers nowadays are a major part of CPU cost and an even larger part of CPU performance. Data thatβs read early and kept nearby can make an instruction take one cycle instead of one thousand.
Sending the program-counter on a wild goose chase across hundreds of megabytes guarantees youβre gonna hit those thousand-cycle instructions. The next instruction being X=N+1 might take literally no time, if it happens near a non-math instruction, and the pipeline has room for it. But if you have to jump to that instruction and back, itβll take ages. Maybe an entire microsecond! And if it never comes back - if jumps to another copy of the whole function, and from there to parts unknown - those microseconds can become milliseconds. A few dozen of those in the wrong place and your water-cooled demigod of a PC will stutter like Porky Pig. Thatβs why Denuvo in practice just plain suuucks. It is a cache defeat algorithm. At its pleasure, and without remedy, it will give paying customers a glimpse of the timeline where Motorola 68000s conquered the world. Hit a branch and watch those eight cores starve.
Sauron tries corrupting Sam! He just has very little exposure time, and no idea what this weird little guy wants.
The ring is basically an inch from being dropped into oblivion and it is desperately trying to negotiate with a laborador retriever. Itβs expecting a wolf. Itβs offering a dark forest with tall deer and all the necks you can bite, and the labβs like, I dunno, that sounds kinda scary, Iβmβa just do the thing and go home. It almost gets there. Being carried gently in the mouth of this tired barnyard animal, it offersβ¦ a lake. A really big lake. And the the labβs like, how big?, and the ring offers a lake the size of a sea, and the labβs like no, thatβs too big, but thank you. Ptoo. And then he goes home and only thinks of it in those dreams where his legs move.
Nexus consistently refuses to be a platform for bigotry.
That should not be controversial, at all, in any context.
If this asshat wants to publish it elsewhere - heβs free to. Nobodyβs stopping him. Itβs just a file. He has every moral right to modify software however he sees fit, and he has every practical right to be a homophobe online with fellow homophobes.
But I donβt want anything to do with him. I donβt want to use any website thatβs cool with bigots spreading bigotry. If the people who run the website donβt want to deal with that shit eitherβ¦ tough shit, guy. Find another bar. This oneβs not for Nazis. Warn all your Nazi friends.
We beat scarcity. Weβre up to our eyeballs in labor-saving technology. We just left people in charge who cannot imagine using it to save labor.
Copyrightβs explicit purpose is to encourage new works.
Any form of βunpublishingβ is theft from the public. You wanna say a guy canβt make money on a thing? Great, fine, go nuts. But nothing any human being put effort into deserves to be lost forever.
Linear forums sucked. Reddit provided the sane solution: nested comments and vote-based sorting.
Last month someone linked to Something Awful, for a thread about the siteβs greatest stories. Cramping my scroll-wheel finger and wearing out my patience, forty tall-ass posts at a time, each of them festooned with signatures and animated GIFs and a mile of whitespace - I cannot tell you instantly exhausting it was to see the thread had four hundred pages. Seeing any one question answered required scrolling through ten of them. X mentions a thing, Y asks about it a page and a half later, and Z jokes about it three pages on, and then fffinally someone tells Y whatβs going on.
This is interest poison. This is a format that actively targets engagement and destroys it. Did you miss a day or two? Kiss it goodbye, because youβre never going to catch up and still give a shit.
Different compilers have robbed me of all trust in order-of-operations. If thereβs any possibility of ambiguity - itβs going in parentheses. If somethingβs fucky and I canβt tell where, well, better parenthesize my equations, just in case.
Moderation exists to identify and exclude people who are being absolute cocks.
You donβt need any grand philosophical statement about values. You donβt need to defend the paradox of tolerance against absolutist demands for unrestricted expression. Itβs perfectly fine to say: you were doing some diet Nazi shit, thatβs awful, fuck off.