Ignores failure modes. The is_prime example takes an integer to a bool, and is put on the far side of a network call, but there's no change to the interface to indicate network failures and no fallback path to compute it locally if things go wrong.<p>(strictly it calls exit on anything going wrong, but as the whole problem with rpc is the extra failure modes that's not compelling)
The whole “network order” of bytes thing is not a given. There’s little endian “network orderings”.<p>And now it seems most CPUs are little endian anyway, so why do this conversion anymore to “network order” if you are designing a new protocol?
Great intro for more junior devs learning how it all comes together. It's incredibly easy to use these things without understanding what they are doing for you under the hood.