Either treat it as not our problem, or if we're going to get involved, have a strategy to change the government. Yes it has been done in Iran at least once from the outside, maybe twice.
I don't care about Iran's leadership and think this shouldn't be the US's war to fight. Also, we aren't even trying to replace their government, we're just attacking per Israel's wishes. There must be a lot of Americans who agree.
It's not really a competition with the foreign labs cause they're copying. To illustrate the difference, if there were somehow an impenetrable firewall between the US and China, the US models would continue improving while the Chinese ones don't.
The only solution is for US labs to find a way to not get copied, and idk how. Banning Chinese models doesn't help with that.
Cheapest Amazon RDS Postgres is like $15/mo if that's cheap enough. If you're doing lots of projects and don't want to pay that for each one, you can CREATE DATABASE for each with separate ACLs.
You mentioned not wanting to spend admin hours fine-tuning a self-hosted instance though. Are you really hitting the DB hard enough for that to matter, but SQLite works fine? Cause I haven't tuned local Postgres in years.
I meant you give it back immediately when you're done with it. So usually after you commit, unless you want to hold it longer for some special reasons.
This is why I said PgBouncer is a sign of something being wrong. Devs aren't managing connections right, they try to paper over it with PgBouncer, it's not really easier cause they now need to be conscious of xacts instead, and now there's an extra moving part in the DB that most of the team doesn't really understand. PgBouncer has its other uses, but I really don't like this one.
I also get it, xact should be 1:1 with connection in a lot of these backend applications. Sometimes I have a few little helpers for that, like pool.sql() will take conn, open xact, execute, close xact, return conn. If the DB driver doesn't already have that.
Tbh this is one of the reasons I said PgBouncer is a sign of something being wrong. It's trying to paper over improper connection usage, and it's not even easier cause devs are still managing xacts.
The idea is you only take a connection from the pool when you need to touch the DB, then you give it back immediately. It's very possible that's only a small fraction of the time spent in some handlers. If you inject the connection, you always hold it through the entire request.
Every xact within a given connection will use the same connection-wide config, but the timeout is counting how long a single transaction takes, right? I don't see why you'd need to give up pooling for this unless you need different settings per xact.