brandur
Joined 15 years ago
Joined 15 years ago
The question wasn't "does every billionaire pay the top marginal tax rate", it was: could you elaborate how France is "giving all the money to billionaires"? which was the OP's claim.
If this was true, it'd be simple for your ilk to answer it directly. Since it's not, you lie, misdirect, and shift the goalposts around in defense of the original lie, viciously attacking straw men that you erected.
France gives no money to billionaires. Even if you think their tax rate should be higher, those billionaires pay billions into a system that's managed to bankrupt itself through massive spending on general entitlements. You could take every billionaire in France to the guillotine, steal 100% of their wealth, and it'd fund the French government for less than two years. Spending must go down.
Could you elaborate how France is "giving all the money to billionaires"?
I remembered the scene vaguely, but was curious to go back and see it. It happens at roughly 7 minutes 19 seconds into the movie, intercut into the initial awards scene, and right before Willem Dafoe's nephew gives Steve a seahorse in a bag.
He'd accept this PII en lieu of dollars for secondary on call coverage, so a safe assumption is that he intended to monetize the extracted user PII in some way. I am sure he would deny this, but there's a point where you have to let the evidence we do have combined with common sense guide us to the most likely conclusion.
One of the best things about LLMs is they make these sorts of refactors entirely plausible even if you're not a subject area expert. You could probably prototype this and have a patch ready in an hour or two.
OOC — I've been trying to gather real world anecdotes on who is using MySQL these days given that even some of its biggest traditional champions like PlanetScale are talking a lot more about Postgres recently. Are you using MySQL as part of an existing project that was started years ago, or do you still intend to use it for new things going forward?
* It's common these days for a single operation to manipulate dozens or even hundreds of database records. Often these records are interrelated because they reference each other. So with fakes, you're faking initial inserts and then faking inserts based on other fake inserts, creating a fragile tree structure of fakes, which models reality very poorly.
* No data type validation on data inserts or updates. Put a string in the integer field? Find out in production.
* No foreign key validation (or just general capacity for checking referential integrity) so you don't find out that you're rows aren't referencing each other correctly until production.
* Similarly, no checks on primary keys, check constraints, triggers do not run, etc.
* Since you're not doing real inserts, you're not doing real updates or deletes on inserted rows. So if those latter operations are referencing the wrong ID, you don't find out until ... you guessed it, production.
* You can try to build up the fidelity of your repository/fake framework, but the more effort you put into it, the closer you are to just rebuilding a database and the slower it'll get. You'll also never achieve actual parity with what your database is doing.
* Building out these big fake frameworks is a lot of work relatively speaking (you didn't need to build out anything for your DB because your non-test code is already using it), and gets you negative gain.
There was a time a long time ago when disk I/O was a lot slower than it is now and maybe there was some argument for a repository/stub system, but that was at least a decade ago, and even then the rationale was thin. These days we have NVMes, and if you're a real speed demon and think those are too slow, you can just put an in-memory SQLite or Postgres in place for your testing and get all the performance advantages with none of the downside.
Test transactions do occasionally cause other trouble too. DDL is theoretically transaction-safe in Postgres, but when running concurrent schema changes even in test isolation, you can still have tests that leak into each other. Testing anything based on listen/notify is also difficult in a test transaction.
Probably not a bad strategy is to have both tools available in your test helpers: (1) test transactions for the common case, and (2) template databases when you need more isolation.
However, as I alluded to in the second part of the article, in River we're currently using an approach similar to template databases in that every test case operates in its own isolated schema, but with the twist that we also reuse schemas after successful tests, saving us a lot of time in setup costs and bringing us back closer to test transaction performance. Great isolation and our tests are extremely fast, so it's working well.
---
[1] https://brandur.org/fragments/go-test-tx-using-t-cleanup
https://github.com/peterldowns/pgtestdb#how-do-i-make-it-go-...
I'd just say that a nice thing about it on disk (even if you disable fsync) is that in case of a failing test, you can examine the post-run state which is occasionally extremely valuable.
Twitter: https://twitter.com/brandur
GitHub: https://github.com/brandur
Website: https://brandur.org
Email: [email protected]