

My standard for an orm is that if it’s doing something wrong or I need to do something special that it’s trivial to move it aside and either use plain SQL or it’s SQL generator myself.
In production code, plain SQL strings are a concern for me since they’re subject to the whole array of human errors and vulnerabilities.
Something like stmt = select(users).where(users.c.name == 'somename') is basically as flexible as the string, but it’s not going to forget a quote or neglect to use SQL escaping or parametrize the query.
And sometimes you just need it to get out of the way because your query is reaaaaaal weird, although at that point a view you wrap with the orm might be better.
If you’ve done things right though, most of the time you’ll be doing simple primary key lookups and joins with a few filters at most.






We’ve actually figured out that that one is basically a “stutter” in your memory encoding system. Consciousness isn’t as continuous as it feels, and so you can get a situation where your memory says it just put some stuff in working memory and consciousness thinks it means your current thoughts or observations. So you end up with a feeling of a past recollection of a current awareness. Because it’s tagged “past” you can’t do anything other than understand it to be in the past, even though you’re actively experiencing it.
A related phenomenon is how you “always” wake up just before the loud noise. Even though you’re asleep you still hear things and process audio. A loud noise happens and your audio processing tells you to wake up. Conscious you wakes up, creating that new memory, and then processes the noise that woke you.
Consciousness is a process that takes place over a duration, not an instant.