Copyright is literally the definition of “who has the rights to determine how copies are made.” If you were to believe most people who publish content on YouTube, you might think that copyright means authorship, but it does not.
When you purchase a movie on Blu-ray, you don’t own the film. You own a piece of plastic which represents a license to watch the film. But you can’t turn around, make copies, and start selling those copies without violating The film studios “right to determine how copies are made.“
The only difference between a physical Blu-ray (license) and a digital license is that digital license is revocable. It’s not fair. It isn’t just. But it’s literally part of the contract that you agreed to.
There’s a separate discussion to be had around “fair use.” Backing up stuff that you have paid money for does fall into “fair use,“ unless third-party encryption is involved. Because it is against the law to circumvent encryption. (Unless, of course, you’re the FBI.)
This is the only characteristic that separates ripping CDs from ripping DVDs — CDs missed the boat on encryption.
I’m not necessarily arguing for or against anything here other than to simply explain how it currently works (in the US, at least). There’s a separate discussion to be had about perpetual versus revocable licenses after money has been exchanged. Beyond that, there’s a discussion to be about how to protect the intellectual property of the things that you spent millions of dollars creating; and how that fares with the consumers of said intellectual property.
These latter discussions are far more nuanced than most Internet commenters are qualified to decide.
My strongest languages, in no particular order, are Go, Python, JavaScript, and modern PHP (with types and all that jazz).
I’ve decided to go with JavaScript this year because over the last 15 years, they’ve been working on JavaScript like it’s the cure for cancer. They’ve added so much syntactic sugar to JavaScript in recent years, that I can develop solutions in fewer lines of code.
That said, for day one, I did separate implementations in JavaScript and Go. With Go, I leveraged the built-in support for testing, benchmarking, and profiling to look at the flame graph and figure out where I could optimize performance.
I’ve been wanting to learn both Rust and server-side Swift. I figure that during my time off over the holidays, I can practice porting my JavaScript solutions over to those other languages.