Nice write up! There's a couple bugs in the Scores module though... a lowercase "p" in `Process.get` and the `score` var isn't initialized. But it's a nice topic to ponder and its great to share this information with folks new to Elixir. The power of the first-class, baked-in Process in BEAM languages is awesome. Ironically though, even though I've written lots of GenServers I haven't yet had a need to reach for the Process dictionary. I suppose it's just not the sort of problems I've worked on. I try to stick with just mutating pipes, from input to result, and avoid in-memory global state. One of these days, I'm sure I'll have to. Cheers!
Will fix the example! As for not using process dictionary, you may not use it personally, but a lot of tools might it on your behalf, for things like tracing etc. it’s definitely something that there is no good reason to use when writing our day-to-day code.
Nice write up! There's a couple bugs in the Scores module though... a lowercase "p" in `Process.get` and the `score` var isn't initialized. But it's a nice topic to ponder and its great to share this information with folks new to Elixir. The power of the first-class, baked-in Process in BEAM languages is awesome. Ironically though, even though I've written lots of GenServers I haven't yet had a need to reach for the Process dictionary. I suppose it's just not the sort of problems I've worked on. I try to stick with just mutating pipes, from input to result, and avoid in-memory global state. One of these days, I'm sure I'll have to. Cheers!
Will fix the example! As for not using process dictionary, you may not use it personally, but a lot of tools might it on your behalf, for things like tracing etc. it’s definitely something that there is no good reason to use when writing our day-to-day code.