699 karma · joined August 5, 2019
> I wouldn't want an average development team to pursue that approach without good reason, especially when the alternatives are so easy to do right.
Agreed. Good reasons I’ve had in the past are:
- wanting transactional guarantees across your DB data and queue (which you don’t get if your queue is external)
- not wanting to add more stack complexity (this has been an issue when you have to support on-prem deployments that you aren’t allowed to interact with).
I’m sure there are others.
To do this right, you're using row level locking e.g. SELECT FOR UPDATE/SKIP LOCKED [1], and hopefully you're already using idle_in_transaction_session_timeout to deal with total consumer failures. A properly designed queue in Postgres runs more-or-less in parallel, and supports (really fantastic features like) atomic row locks across all resources needed to serve the queue request.
If you need extremely long consumer timeouts, it's also totally fine to use RLLs in addition to state on the job itself.
[0] - https://www.crunchydata.com/blog/message-queuing-using-nativ... [1] - https://www.2ndquadrant.com/en/blog/what-is-select-skip-lock...
Like everything, it depends on the application.
https://en.wikipedia.org/wiki/Highlander_II%3A_The_Quickenin...
Now apply these exceptions to user space, and you’ve basically reinvented the LGPL.
If you're good with your authenticated users directly talking to the DB (which there are plenty of uses for), it's a great way to get your data into the browser.
Do you think sub-zero windshield wiper fluid banning did that, or catalytic converters and efficient engine management? Hint: it was the latter.
You don't know what you're talking about, but you feel like you do. Methanol, ethanol, and isopropyl alcohol are all legitimate ingredients for the examples I gave. You're making equivalence between burning leaded gas, and a desire to spray my windows with volatile alcohol.
Are you planning on banning isopropyl alcohol for medical use? Removing my ability to by vodka? Stopping my ability to use my camp stove?
One day it's stopping toxic waste getting poured into the watershed, the next it's a desire to stop research on safe nuclear power, and ban gas stoves for interior cooking use.
Blind environmentalism is its own worst enemy.
What do I do with the windshield wiper fluid that is in my car, before I go to a freezing area? Do I waste it all by overusing it on the drive up? Do I set calendars to make sure I cycle my windshield wiper fluid, so that I'm low enough by the time I get to the mountains, I can buy sub freezing fluid, that my remaining fluid won't freeze?
What I end up doing is making my own blend on the coast because (thankfully) I know how, but it's a ridiculous limitation of California environmentalism.
I'm a software engineer primarily. Postgres is another tool I like to use to solve data problems. I've used it as the backbone of applications in production at terabyte scale. I've architected and been responsible for the deployment of it, both on-prem and in "the cloud" (including the operations of PITR and replicated failover). I've written extensions for it, and hacked on the codebase for internal use.
Most are novices that have no idea how far the rabbit hole goes. I’ve been using postgres for about 25 years and every time I go to implement something with it I learn something new. I’m intermediate at best, and I’ve done things like rewrite the postgres wire protocols from scratch for internal use cases. This is especially true when I lean on the DB to take on new interesting roles (e.g. adding new operators for custom indexing of custom types, extending existing types in novel ways, adding new access methods, fun with foreign data wrappers, complex PITR and logical replication strats).
My last ICE car I bought new had a 10 year/100k mile powertrain and emissions warranty; I haven't had to replace the engine or transmission yet (which would be much more expensive than the article's quoted price). My recently purchased English-made "beater" SUV is 22 years old, and has 155k miles on it. I had to swap the radiator, drag link, and brake booster reservoir: my out of pocket was $1500. Obviously my points are anecdata, but leading with their examples feels like a massive EV cope. Outside of non-911 performance cars (I'm looking at you recent BMWs, Mercedes, Volvo cars and Porsche SUVs) ICEs have become insanely reliable: the engine isn't the weak link. Whether you're buying an ICE or EV, you still have to pay for: suspension, brakes, tires, windshield wipers, and "life support" parts.
EVs owner should lead with the fact they get to push emissions output to the electric grid (which hopefully will become better because we can focus on centralized improvements) and they should continue looking improve the reality that battery production has a huge environmental and human cost (but could be made to get better).
Your calibration is off: he wasn’t trying to put-Chad him.. he was telling him to “git gud”
If you are old enough to remember those days, then you remember COBOL, Algol, Fortran, Pascal, BASIC, Ada, Oberon, Lisp/Scheme, Forth, O’Caml etc. They’re all great languages, some still have their uses. There’s a reason all of the major operating systems have cores written in C/C++. It’s entirely because they’re pragmatic and “work”, and not some conspiracy.
Edit: although now that I write it, what if C/C++ was planted on earth by an alien intelligence in order to slow down the development of the human race.
To quote Sean Connery in The Rock:
Losers always whine about their best. Winners go home and fuck the prom queen!
Did you propose/implement/release something better than printf?
> I'm time and time again amused how anti intellectual and outright hostile to technological progress the programming profession is. programmers, out of all of them.
Perfect is the enemy of good. Some people talk about getting work done, some people get the actual work done and move on.
Edit: It's almost like the whole world got a lot of work done with the tools they already had.