I had the same experience. Repeatedly. IMO it's the software, not the hardware. The issues always start/get worse with a big update to Android or the main Google apps.
running the official bloatware (firmware) I presume?
It happened to me when I was using shitty brands like Xiaomi that include a lot of malware and spyware in their official firmwares. Not anymore on grapheneOS (and /e/os on my daughter's phone).
The official firmware, yes, but also Fairphones for years, not Xiaomi or the like (FP2 -> FP3 -> FP5 now). So the "bloat" in question is the Google stuff.
I tested the use case I could've really used this for, but it doesn't seem to be able to do this: "Biel to Zürich, but not through Grenchen".
The SBB timetable app and website can become really unhelpful if there has been an "accident involving a person" [0]; other than that, I've got little issues with them day to day.
But it seems your model doesn't have a way to know that the IC from Biel to Olten goes through Grenchen (it only presents the obvious routes that wouldn't work in this case).
If it's something small, usually yes. But very often, that's still on the same routes (often, not all rails are blocked, so only some connections through the station suffer).
But I've also seen my fair share of "trains in this direction won't recover for hours" over the years, and directly after such an incident, the official systems usually don't really adapt all that well. I don't know if they're "massaged" manually after that or if it's just a case of the entire system finally figuring out that an entire station is FUBARed, not only one or two scheduled connections…
I'd agree with you based on the language itself; Lua has some annoying idiosyncrasies like e.g. (my main pet peeve) 1-based indexing.
But I suspect the positive opinion on Lua stem more from the standardized environment the language is built around (i.e. how it is embedded into applications): If you don't explicitly pass capabilities like file handling etc. into the script, it CANNOT use them. Sooo many scripting languages get this wrong, it's actually embarassing.
1-based indexing is really a lame duck argument - if you can't get past that, you're simply being stubborn.
You absolutely can have tables indexed at 0 - what you cannot do, is fail to take responsibility for the use-patterns you apply to those tables, if you do so - and more specifically you have to take responsibility for the requirement that you use 0-based tables, instead of more optimal methods.
The table is an extraordinarily flexible type. You will gain immensely from using it properly - whether its the newbie dilemma over pairs()/ipairs(), or whether its the professional metatable manipulations - the power of this type is undeniable.
However, if you cannot get past the fact that you must learn it, and that it is applicable to your requirements in every single case, then you are for sure going to have a hard time.
Too much power + too little attention to important details = burnt fingers = endless whining. This is my personal stance having used Lua for decades now, professionally and personally, to do amazing things.
Imagine someone sneaking in The King in Yellow into the training sets used by all projects training models somehow, breaking all future models irreparably -- and then the engineers trying to find this poison pill in the dataset and going mad one by one as they find it and aren't able avoid reading into act 2.
Note: AFAIU "Data Oriented Programming" (as championed e.g. in the Clojure community) and "Data Oriented Design" (as championed in the video game community) are very different philosophies for different use-cases and diametrically opposed on many dimensions. People knowing only the one phrase and assuming both to be synonymous will be in for a lot of confusion when reading about the other.
reply