Why are we regressing back to the horrible world of vendor lock in and single browser sites. Chrome is the new IE6?
186 karma · joined October 11, 2017
Why are we regressing back to the horrible world of vendor lock in and single browser sites. Chrome is the new IE6?
It is quite simple: just skip the people and or technologies that make you vomit in your mouth and go for the interesting parts instead.
FOSDEM is huge and there is usually something somewhere that will be interesting. PostgreSQL, Prometheus, Grafana, Firefox, (tomorrow Rust). Nothing to complain about, and it is free.
Too bad I'm stuck on 9.1 for the time being which lack many of these really nice features.
(best to just spell out the obvious)
This is just the extreme form of the fastest way to complete the game, using the (broken) logic of the game itself.
Exactly the same situation as comparing play at home with kids to any elite world record setting play in the same game... "This world cup is not at all how I play at home ..."
I believe each institution get printed access logs sent to them, which is never looked at.
I've seen issues with the touchbar and keyboard from all my collegues. As a long time apple user, (since forever, early 90ties) I will never buy one of these pieces of expensive shit ever. A new design with escape and functional keyboard is required to get me back...
Some issues might be "fixed" but could they fix the actual *fractal of bad design"?
Isn't it still a mix of c-style, java-style, inconcistent, left associative, horribly broken language it always was?
I always thought the bugs were anecdotal backing of the main point: php is badly designed, non programming language for non programmers, who suffer stockholm syndrome from all php abuse...
Why not have both raise/rescue and throw/catch when the used are different. And why not have both methods, functions and closures? It is for different things... Why read docs when you have irb and can pretty much inspect everything you need.
All the comparisons with java... I hate it, much rather use ruby style OO than the horrible boilerplate hell that I remember from java.
Problem with ruby is not that it is not java, it is imho sometimes it is too easy and forgiving - letting you do crazy things like unintentional meta programming, and not catching errors until runtime. Other problems with ruby is complexity and the lack of clear spec (lookup what happened to the rubinius ruby spec project).
The more languages you need to type, the worse it becomes.
One db can be a problem, or a strenght depending on the domain; And I really dislike religious design, esp microservices.
I have less problems by avoiding ORMs (and religios microservice arch, or fundamentalist interpretations of rest)
Database handles the shared state in a heterogenous environment. We need it to be centralized to keep track of money, the apps can't do that, two independent databases cant do that either. It must be one system that guarantees concistency.
It works great, there is no downtime. The interfaces are defined, the database stands alone, updates are deployed separately.
A rest api... how and why should it be responsible for your data? It solved a different problem.
You might not even need a database I guess, and then anything goes.
I need and like my database, and have suffered trying to get along with different ORMs. SQL is so good at what it is designed to do if you just let it.
(And why just one rest api? How about 100 restapis, some microservices, some web apps, some background workers, many different languages. One database. No ORM)
you can have lots of dynamic sql but that might become a rabbithole, just as with an ORM. It sounds like a problem you shouldnt have, now throwing an ORM at such a problem... might lead to even more strange issues down the road...
You dont need an ORM for testing your code...
But I think this varies from project to project. How many different applications, in different languages are using your db and do you tolerate downtime?
It probably depends on the domain/problems.
My experience is with transaction heavy financial systems or similar, with web frontends, microservices sprinkled around in different languages...
The web app or java worker should be allowed to focus in its problems, the bussiness logic needs to live in one central place, which happens to be in the database accessed through thightly controled interface in the form of stored procedures.
Why pretend your SQL database is about objects? It is not... (it is about data)
A stored procedure can act like a view or a query, or use procedural logic. Point is: your app can call it and get a concistent result, no matter what refactoring has been going on.
A direct query needs to know too much about the database (orm generated or otherwise) which prevent refactoring and couples app to database harder...
You can rename or merge tables, views functions in the database but the interface the app use (stored procedures/DAL) will stay the same and work the same way.
As for app logic... I prefer bussiness logic in the database, not the app when the data is important. Application logic stay in your application, data dependent bussiness logic stay with the data.
you can deploy schema changes independently
you can change everything and the app should not notice
But I would recommend writing, reviewing and deploying migrations by hand, esp for critical parts of the schema (automatic tools are almost guaranteed to get something wrong, with locking etc)
ORMs seems nice for simplified problems but becomes a horrible mess for real problems imho...
I've worked on some rails apps, and the ORMs caused more problems than they solved...
No need for ORM, and no inline sql logic in your application code.
I dont like ORMs but did struggle some years trying to use them which imho was a detour. SQL and stored procedures in plpgsql is so much better, easier to maintain, easier to reason about etc.
Rust or functional languages show you do not generally need null references, you have options instead. It is completely different.
Null in C or C++ is much more a very costly misstake. Missing data is just reality.
Data may be incomplete, the values unknown. SQL is designed for that. It is designed to handle reality. Whereas null references are not, they cause problems you do not need...
Data != reference
you can avoid the issue of allowing invalid references everywhere
you can not avoid incomplete data.
A database sometimes needs to model this case: the value is unknown: maybe the paper file you digitized was corrupted or destroyed, or other valid reasons this value is not known.
Whereas null references can be avoided, like in rust etc.
But if safety does not matter, or its pure crap anyway. Then refactor away.
Proper review of core components that are used and proven is hard already, refactoring such components - don't do it if avoidable - there must be a very good reason. And convenience ain't one - you'll probably get some duplication of code and double maintainance during the transition period.
Making small PR is just a way to be safe and smart, one branch with individual gradual commits that could be used separately is also a way (if they could be reviewed separatley).
Amen to that. Doing a proper review for any software is so hard, so not fun and often misunderstood and unappreciated (by management).
And then when shtf you also get the blame for your "weak review".
please think through your API if you are to design an API, the tools will not think for you and you can fool yourself instead...
Swagger will not magically solve anything. I have seen and experienced that you can really create nonsensical but pretty and auto documented APIs using swagger in no time.
In my data oriented mind, the primary thing that matters is the data that is sent, the second is other semantics like idempotency.
Neither SOAP nor XML solve or helps: there might be no wsdl bindings in your language, or they are badly implemented (true in my experience).
XML make people nest structures where it could have been flatter, SOAP even more, and annotates everything whithout a need for that.
This cost for no reason but to entertain the CORBA like pipe dream, or should I say nightmare.
We just resorted to pulling out data from xml with xpath. And more or less template the response back, no wsdl and very simple.
But why inflict this pain on your API users?