Couldn't you just take the advice in [0] of parsing into types rather than validating? Then you get the best of both worlds: your inputs are necessarily checked every time the function is called (they would have to be to create the type in the first place), but you don't need to validate them at every nested layer. You also get the benefit of more descriptive function signatures to describe your interfaces.
If that's actually how events played out, one hopes that Zuck would at least be able to appreciate the irony of his idea being stolen by a vendor he hired to implement it.
For those interested in these for other subways around the world, http://stations.albertguillaumes.cat/ has done a lovely job rendering them. It's impressive how many systems are covered.
"Somewhat inherent" isn't meaningful or correct. The fact is that there is a history API and you can use it to implement history for SPAs. Therefore, lack of history is not inherent to SPAs by definition. Intentionality has nothing to do with it.
I find it bizarre how such a site ended up an SPA. Nothing about it suggests SPA. This could just be a website and would be supported by any web browser, but instead they've implemented a crap custom browser and web in JavaScript.
The map kind of does. It's really nice to just click on different dots and see different cities with no latency or page load. I think the right way to implement this is as an SPA with `history.push` for shareable URLs.
Not without latency. Unless you make sure everything's on the edge? But that is way more complicated anyways — now you have two systems to maintain, instead of just a single client-only JS app.
[0] https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-va...