"Some may ask why we didn’t announce these role reductions with the ones we announced a couple months ago. The short answer is that not all of the teams were done with their analyses in the late fall; and rather than rush through these assessments without the appropriate diligence, we chose to share these decisions as we’ve made them so people had the information as soon as possible."
> But they don't mutate data and hence every function call creates a new data in memory taking up space.
Well, only if you mutate the data. And even then, most functional languages provide persistent data structures that allow efficient sharing of the unchanged parts of the data structure.
> Now my question is where do I learn about these nitty gritty's? Should I read about compilers more? Or systems? Or what?
I'd recommend choosing a functional language and an imperative language and learning both.
For some reason I'm kind of sad seeing Twitter's (very cool) homegrown technologies in the "Old" diagram with the "New" architecture basically Google Cloud. I'm sure it makes sense internally, but it feels like the loss of an innovation center in the streaming space.
One advantage of Kafka is the ecosystem effect. There are many systems (Flink, Kafka Streams, Pinot, Druid, Presto, etc) that connect to Kafka. I'm not sure about the extent of Pulsar support here, although I'd love to learn more!
It's interesting that I could write your last sentence, but replacing "exceptions" with "monadic error handling."
Ultimately, both are equally expressive and it's reasonable to personally prefer either. The "Result" type approach maps better to the concept of a program as a series of inputs and outputs (functions).
Perhaps they know the stratigraphic relationship between the sites and can estimate that way? (If one fossil is above another and you can rule out faulting or overturning, then you know which is younger.)
[0] https://upload.wikimedia.org/wikipedia/commons/9/92/Annual_A...