Ten years ago, James was working for a small company that made electronic components. That company got eaten by Initech, who wanted to connect all those smart electronic devices to their own products. This meant that the two companies had to agree on what that communication protocol would look like. More than that, this was on the critical path to completing the merger- Initech wouldn’t go through with the purchase if they couldn’t integrate with the systems they were purchasing.
Negotiations were difficult. A lot of the challenge came from Initech’s side, because they wanted to make the protocol a “do everything” system for managing data, which just wasn’t something the embedded components were designed for. Over the course of many months, a design document gradually took shape.
Since the messages passing through the protocol might be arbitrary lengths, one of the key decision points was “how do we determine the length of the message?” James’s team advocated for a byte length in the header, but Initech protested: “We might not know the length of the message until after we’ve sent it.”
They couldn’t explain how that could be- the protocol didn’t support streaming- but Initech wasn’t having any of it. The obvious other solution was to just simply ensure that the message ended with a null byte- a