• 1 Post
  • 1.08K Comments
Joined 2 years ago
cake
Cake day: June 12th, 2023

help-circle


  • It should be pointed out that modern LCDs use local dimming zones to only light up certain parts of the display, although that only really helps if large swaths of the image are solid black. LCDs have come a long way from the old days when they were side or backlit by CCFLs. So even LCDs might draw slightly less power for light-on-dark, although you’d probably get even more benefit by just turning down the displays brightness regardless of the color scheme.



  • You’re being too literal with the term copyright. Fundamentally what copyright has always been about is preventing someone else using your work for their own gain without your permission. In that respect yes, copyright is critical in the digital age. The problem is that it’s a compromise. It balances the rights of someone who has “purchased” a copyrighted work with the rights of the creator.

    Generally the balance that has been struck is that as a purchaser you have the right to do anything that you want with a work except to sell a duplicate of that work. You can sell the work, so long as you no longer retain a copy of it yourself. In practice this means transferring rather than copying. How exactly that’s accomplished gets into the weeds a bit if you start splitting hairs, but what’s important here is the spirit of the thing, nobody is going to care if technically you both have a copy for some short period of time in the middle of the transfer process.

    As for “copy protection” aka DRM that is and always has been complete bullshit because it is a fundamentally intractable problem. There’s exactly one way to enforce copyright and that’s the legal system, anything else is doomed to failure.

    We also desperately need to prevent companies from using that monopoly to prevent older works from being available by having the copyright and not publishing the work

    This is solved by limiting copyright to a short duration after which the work enters the public domain. If a company wants to squander a copyright by sitting on it for the limited time they have it that’s fine but they’re only hurting themselves. The only reason this is an issue now is because of the ridiculous century long copyright terms we currently have. If copyright was reduced to a decade you would never see this happening anymore. That said a safeguard should also be in place to prevent copyright being used as a censorship weapon by the wealthy. I think a “use it or lose it” clause that immediately enters a work into the public domain if it’s not available for some period of time (maybe a couple years) would nip any potential issues there in the bud.



  • You absolutely should not be just ignoring too many requests responses. The entire point of putting rate limits on APIs is to reduce resource usage and while it doesn’t take many resources to serve up a request denied message that amount isn’t zero. If you continue to hammer an API that has rate limited you at some point they will decide your traffic is malicious and just start blackholing all your requests.

    I’m honestly not sure what the best way to do rate limiting would be, I suspect that might depend on a number of factors such as what web client and async framework you’re using, but I would recommend if at all possible using a library rather than rolling your own. The library you found so far seems reasonable enough at least as a first attempt.










  • It’s because Rust is a significantly higher level language than C (and C++ gets held back by it’s C roots). In C there’s no such thing as a method, there’s only pointers. The closest you get to a method is a function pointer. C++ expanded on that with the concepts of class, object, and method, but stopped half way leaving an object and a pointer to an object as distinctly different concepts that are treated differently by the language. In order to do anything with a pointer besides change its address in C++ it must be dereferenced. The -> operator in C++ is really syntactic sugar for a dereference followed by a method invocation. In other words these are equivalent foo->bar() and (*foo).bar() as stated in the quote you provided. C and C++ treat pointers as their fundamental abstraction and treat everything as special cases of pointers.

    Rust in contrast treats Objects as first class abstractions. It doesn’t really matter whether you’re dealing with the owned object or a reference to that object owned by a different scope, in either case the compiler knows at compile time what its type is and what traits it implements. Given that knowledge whether the method is invoked from the owned instance or a reference it’s treated exactly the same. Further because pointers as opposed to references are treated as second class citizens (relegated to the “here be dragons” of unsafe), the concerns of C/C++ about distinguishing between a pointer assignment and a pointer dereference aren’t particularly important. In general the times you need to explicitly dereference something are far more uncommon in Rust, with the compiler generally being able to work out on its own when it needs to dereference something or not.

    The bit about the receiver just means that the compiler at compile time knows the actual concrete type of all references with the exception of dyn references which force compile time dynamic dispatch (in which case the compiler inserts and utilizes a vtable exactly like C++ does).



  • Pretty much yeah. They want there to simultaneously be a healthy and robust economy (to maximize those sales numbers) while also having a terrible labor market to minimize labor costs. Low unemployment means that employees can be picky about job offers, while rampant unemployment means they’re more likely to accept extreme low-ball offers. Nevermind that those two are directly linked and it’s impossible to achieve both at the same time. Not that the way capitalism is done in the US has ever been sane, logical, or sustainable. Line must go up right?



  • Your mistake is thinking this was a binary choice. The reality is that both Trump and Biden were competing to convince people to come out and vote. Not to vote for them but just to vote. Nearly everyone would already know if they’d vote Democrat or Republican, the only question was whether they were going to vote at all. Unfortunately Republican and Democrat voters require different motivations.

    For Republicans all they need is a target. Someone to be angry at and blame all their problems on. Trump gives them that in spades. They just want someone to tell them it’s someone else’s fault their life is shit but that they’ve got a plan to fix it by making someone else suffer. Trump was only too happy to do exactly that.

    Democrats meanwhile want to hear exactly how a candidate is planning on fixing problems. Usually not just any problems either, but specifically the problems they care about most. That could be global warming, racism, the wealth gap, workers rights, gun violence, the genocide in Palestine, the housing market, or something else entirely. That is what motivates them to show up to the polls. Biden (and then Harris) largely failed to do that. Instead he put forward plans that either inched towards solving those problems at a snails pace, or like in the case of Palestine outright ignored the problem.

    So yes, Biden is objectively a better president than Trump in every metric except for one. The one that actually mattered. The ability to convince people to get off their asses and head to the polls. Honestly at this point the problem isn’t even Biden or even Harris, it’s the entire DNC and their milquetoast platform.