He links here as some kind of damning proof that ORMs are default bad.
https://openai.com/index/scaling-postgresql/
“It’s a poor craftsmen who blames their tools.”
My ORM rule of thumb: ORM for CRUD not Reports
If you are joining 12 tables for operational data, you have a design flaw. That’s a reporting query pattern.
Often temp tables, CTEs etc are needed as an immediate fix with redesign as a long term fix. The query planner simply can’t optimize that in a reasonable time or it’s beyond there scope if what it can optimize. Also their solution to “joining in memory” is common.
My DB query rule of thumb: If the query is hard for you to understand, it’s hard for the planner to understand.
Default to small fast simple queries and pipeline them together.
Sometimes longer and more complex queries run much, much faster. The users complain about "complexity", but when they see the performance comparison they change their minds.
http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom... https://www.parsonsmatt.org/2017/10/11/type_safety_back_and_... https://lwn.net/Articles/336262/ https://tomasp.net/blog/2015/library-frameworks/ https://ratfactor.com/cards/not-quite-the-same https://matklad.github.io/2023/11/15/push-ifs-up-and-fors-do...
http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom...
https://www.parsonsmatt.org/2017/10/11/type_safety_back_and_...
https://lwn.net/Articles/336262/
https://tomasp.net/blog/2015/library-frameworks/
https://ratfactor.com/cards/not-quite-the-same
https://matklad.github.io/2023/11/15/push-ifs-up-and-fors-do...
The last article links here, which I enjoyed:
https://venge.net/graydon/talks/VectorizedInterpretersTalk-2...
I think the lwn article on "the midlayer mistake" is somewhat the same point but to a different extreme, and in some ways libraries not frameworks too.
grug wonder why big brain take hardest problem, factoring system correctly, and introduce network call too
seem very confusing to grug
^ This is the best and funniest paragraph of text that I’ve read this year
> given choice between complexity or one on one against t-rex, grug take t-rex: at least grug see t-rex
That section reminds me of The Litany Against Fear.
"I must not complect.
Complexity is the mind-killer.
Complexity is the little-death that brings obliteration.
I will face complexity and I will permit it to pass over me and through me.
And when it has gone past, I will turn the inner eye to see its path.
Where the complexity has gone, there will be nothing.
Only I will remain."
— Litany Against Complexity
I made that up in blog post that feels aligned with Carl's world-view. The Litany appears here in the post: https://www.evalapply.org/posts/writing-practices-to-10x-eng...Edit "lets" -> "makes".
[1] https://en.wikipedia.org/wiki/Object%E2%80%93relational_impe...
Hate to "well ackchyually" the author here, but I'm gonna. The foundational data type in PostGIS is not geography, but geometry. geography is geodetic layer on top of geometry. I honestly don't use geography that much because it only supports a subset of the geometry functions.
When you build a tool (physical or software) or an API (web or library) it should be easy to use. The easier it is to use the higher the probability that people will use it. So, if people build a kind of rudimentary thing and say that is all you need (which may be technically correct), then they do not optimize for likelihood of adoption/usage.
“If we build like Google, we become Google”
I don’t know why a small company would want Google’s engineering problems.