I fear when lord gaben dies volvo will go public and enshittification will begin
I fear when lord gaben dies volvo will go public and enshittification will begin
If valve were public, and required to make a lot more money than the previous quarter, they would absolutely need (want?) to get the maximum amount of money from wherever they could. It’s what I think it’s happening with netflix & others. It doesn’t matter that (hypotetically) they make a billion dolars of revenue. They need to make more next quarter. So they need to raise prices, forbid account sharing, reduce content quarity, anything to earn as much money as possible for next quarter.
Volvo could earn a billion dollars, and if they don’t want to earn more, they could happily stay the same. They might even want to make moves thinking on the long term, such as keep customers happy and excited, or invest in new technologies like proton. Compared to netflix execs, who don’t care about the long term, they care about next quarter.
I don’t know a lot about the stock market, but it looks stupid to me to bet on infinite growth. If the company earns money, and I own shares, shouldn’t I earn money via dividends? It looks to me like the only way to make money is to buy low and sell high? Or is that just greed?
Could you elaborate on the htmx security holes? I only know about xss attacks, and for those it’s trivial to sanitize in the backend.
I too gravitate towards just templating for static or simple interactivity, but for pages that need SEO and interactivity I’m still wondering what’s a good solution that doesn’t involve SSR and a js framework. For a recent project I had I generated the html in php and sent a lot of pure js for dom manipulation
__invoke
is just for making a class Callable. Java has those with functional interfaces. __get
is just dynamic property resolution synax sugar. Instead of something like obj.get("property")
you do obj->property
.
Instead, I would like to see ADTs, generics, pattern matching, immutability, expressions everywhere and a better stdlib. Then one could call PHP functional.
It’s like how people say Javascript is functional. Sure, it has lambdas, anonymous functions, closures, const
. But those alone don’t make it functional.
Functional programming is very different (and at times hard). If you have the time you can check out F#, OCaml, Elixir, Erlang, Rust or Haskell (in order of difficulty imo). Those are more “pure” functional, rather than imperative/OOP with a touch of functional.
See how things work, what features they have and don’t have. How problems are solved in these languages. I think learning about one of them can give you a different perspective on what functional means. I discovered F# one day, got curious and discovered a whole different paradigm, a new perspective on programming. And learning about functional programming really made me a better programmer, even on procedural/OOP.
I’d say that PHP allows you to write very bad code (and makes that the default). It’s a language feature.
For example Java has a lot of NullPointerException because it was designed with null and without mechanisms to detect & prevent these errors. Any method can return null and cause a NPE. It’s just easy to ignore them. Modern languages like Go, Rust or Zig force you to handle null errors, and make it easy to do so. NPEs are a lasguage feature in Java.
In the same way PHP allows you to write any ugly code you want. There are no checks, no safety. People can write bad code, people can be lazy, people can be stupid. PHP allows it and empowers them.
I used to think that php was a bad language until recently (used php5 when i was just learning to program, cooked some delicious spaghetti). But after 5 years I had to use PHP at work. The language has improved a lot, but I think a lot of the bad parts are still there.
Like, why does stdclass exist? Why not just use associative arrays? Why are there warning, error, fatal errors, exceptions? Some functions throw exceptions, other raise errors, others return false, other fail silently and you have to call another function to check if there was an error (last_json_error
). Why do find functions return false
instead of -1
? Like every other language? Why can’t I use strings with numeric values as maps keys? (I can’t have ["001" => value]
, it gets casted to ["1" => value]
.
There are no generics, you have to use mixed
everywhere. The stdlib is an inconsistent mess, some_snake_case, someCamelCase, verb_noun, noun_verb, functions are not namespaced, everything is global. A lot of duplicates: die vs exit, print vs echo, etc. You are forced to use PSR & autoload to be able to use namespaces in a tolerable way, not including_once everywhere. No UTF-8 support, only ascii. You have to manually use mb_ functions. Variable scoping is weird. Variable variables? Why?
And all that is just comparing it to the average language. If compared to a modern language like Rust, Zig, Swift, php is light years behind.
It’s not hot garbage, but I wouldn’t call it “good”. There’s laravel, but not much more. PHP still makes you shoot yourself in the foot by default, unless you spend a lot of time learning its edge cases. Just like javascript.
I find that the only reason for SSR existence is to be able to just move a JS frontend to the backend for SEO/client performonce reasons with almost no effort. If the frontend really needs to be highly interactive then yeah, a FE framework makes things easier. But then you are locking yourself to using JS in the backend. Voluntarily locking yourself to use an objectively bad language.
Then there are the react/angular/other people, who build everything in these frontends.
I really hope tools like htmx gain traction, since it looks like a model able to solve the current JS madness.
That’s why I host all my shitty unfinished projects in a Gitea instance in my VPS. Now they actively cost me money and I feel (a tiny bit) more incentivized to do so something with them!