More or less, minus the CGI.
More or less, minus the CGI.
My thoughts: they pridefully use the same formula in each of their open-world games, thinking consumers won’t recognize that Far Cry’s gameplay is basically AC with guns and a different story.
So if I steal something from someones vacation home and return it before they visit, its not stealing either right? Thats residential piracy is it?
It’s still theft. You intended to and successfully managed to deprive someone of their property, albeit temporarily. You would also still end up in front of a court for trespassing and breaking and entering.
How about I love a painting so much but I’m an asshole and I think artists don’t deserve to be paid for art, so I sneak in while he’s sleeping, with a replica in tow, and swap out his real painting for the identical fake.
Still theft, but with copyright infringement on top. You have deprived the artist of his property—his physical copy of the painting.
I don’t know what changed over the years really, it was stealing in the 90s and stealing in the 00s, and then some people figured if they just said it wasnt stealing enough it would stick?
People unquestionably accepting falsehoods is what changed. Have you noticed that when pirates do get caught and taken to civil or criminal court, it’s for copyright infringement, computer fraud and abuse, wire fraud, or something else tangential to theft but not actually theft? It’s because digital piracy is legally not “theft”.
its hard to argue you should get all your games for free just because, oh well nothings lost.
I am not making that argument.
I even pirate games but I’m not afraid to call it stealing.
I don’t, and I still wouldn’t call your digital piracy stealing. In English-speaking countries, at least, the law considers it to be copyright infringement.
In the same vain, I wouldn’t call randomly sucker-punching someone “assault”: it’s battery.
Because it’s not—by definition—stealing?
Theft is the taking of another person’s personal property with the intent of depriving that person of the use of their property. Also referred to as larceny.
Digital piracy is:
I mean, digital piracy isn’t stealing regardless of the premise that buying ≠ owning.
Stealing is taking another’s property without the intent to return it. Making a digital copy is not taking any property, it’s creating a reproduction of it. The only place left to argue that piracy is stealing would be to say that you’re stealing the company’s theoretical revenue… but that revenue was never tangible property, being that it’s your money up until the moment you give it to them. Piracy is, and only is, copyright infringement.
In late-stage capitalism, they are.
Echo chambers suck, I’m sorry. It’s assbackwards when people dismiss real, lived experiences that don’t align with what they optimistically imagine those experiences would be like.
“We have thoroughly investigated ourselves and found no wrongdoing. On an unrelated note, is anybody willing to sell us some more white phosphorus?”
This might be the only valid reason to ever name a kid “Jayrahmyie”
And the polluters in question are less ambiguously defined to be any company manufacturing or selling devices with lithium batteries with a capacity over 10000 MAh, of course.
Something can be objectively correct yet still presented in an opinionated manner.
And yet, some people vehemently refute that it’s a genocide…
Oh, don’t worry. The guy who answered vmlinuz
beat me to the joke in general :)
There’s always BSD, Hurd, Darwin… or NT 🤮
The kernel. I can take or leave most things, but I’m not going back to the days of writing directly into memory-mapped registers.
That’s not the point, though. The point is to use a nominal type that asserts an invariant and make it impossible to create an instance of said type which violates the invariant.
Both validation functions and refinement types put the onus on the caller to ensure they’re not passing invalid data around, but only refinement types can guarantee it. Humans are fallible, and it’s easy to accidentally forget to put a check_if_valid()
function somewhere or assume that some function earlier in the call stack did it for you.
With smart constructors and refinement types, the developer literally can’t pass an unvalidated type downstream by accident.
You’re going to need to cite that.
I’m not familiar with C23 or many of the compiler-specific extensions, but in all the previous versions I worked with, there is no type visibility other than “fully exposed” or opaque and dangerous (void*
).
You could try wrapping your Foo
in
typedef struct {
Foo validated
} ValidFoo;
But nothing stops someone from being an idiot about it and constructing it by hand:
ValidFoo trustMeBro;
trustMeBro.validated = someFoo;
otherFunction(trustMeBro);
Or even just casting it.
Foo* someFoo;
otherFunction((ValidFoo*) someFoo);
If it were poorly designed and used exceptions, yes. The correct way to design smart constructors is to not actually use a constructor directly but instead use a static method that forces the caller to handle both cases (or explicitly ignore the failure case). The static method would have a return type that either indicates “success and here’s the refined type” or “error and this is why.”
In Rust terminology, that would be a Result<T, Error>
.
For Go, it would be (*RefinedType, error)
(where dereferencing the first value without checking it would be at your own peril).
C++ would look similar to Rust, but it doesn’t come as part of the standard library last I checked.
C doesn’t have the language-level features to be able to do this. You can’t make a refined type that’s accessible as a type while also making it impossible to construct arbitrarily.
What’s next, schools? Oh, wait. Well, surely not public infra—nevermind. At least kids are safe? No? All right then.