3 ms·
Let's not forget about TCP, IP, and all the other protocols involved in the internet that are binary by design. It's more than just HTML, JSON, and JavaScript o
by andrewstuart2 11y ago
Let's not forget about TCP, IP, and all the other protocols involved in the internet that are binary by design. It's more than just HTML, JSON, and JavaScript over HTTP.
> Standardize on some simple encodings (pure binary, self describing binary ("binary json"), textual)
Maybe like gzip [1], hpack [2], bson, or others?
I realize the point he's making about doing unnecessary work, but there's also a reason we haven't expanded human language past written characters or spoken syllables. It's efficient for our brains, and for preserving and transmitting knowledge.
There's just no way to create a binary format (character encodings aside) that can encompass all the possible ideas that can be communicated. Instead, the common text protocols eventually get optimized into binary (HTTP/2) without compromising the ability to express the rest.
[1] https://www.ietf.org/rfc/rfc1952.txt https://www.ietf.org/rfc/rfc1952.txt
[2] https://tools.ietf.org/html/draft-ietf-httpbis-header-compression-02 https://tools.ietf.org/html/draft-ietf-httpbis-header-compre...
- quotemstr 11y ago> Let's not forget about TCP, IP, and all the other protocols involved in the internet that are binary by design. It's funny that you mention IP and TCP. I's sad that we've degraded the end-to-end principle those protocols embodied. Today, it's not really practical to use IP protocol numbers other than 6 (TCP), 17 (UDP), and 1 (ICMP) and their IPv6 equivalents. Middleboxes, out of misplaced caution, reject packets that look unusual. We can't even use ECN. To work around this problem, we run everything over TCP and UDP. That doesn't even work, though, because other middleboxes, working one level up the stack, reject TCP on anything but ports 80 and 433. So now we run everything over multiplexed encrypted connections on one TCP port on one IP protocol. That's just silly. The low-level protocol situation is like a fossilized idiom in human language. In English, we can that something "wreaks havoc", but what about "wreaks happiness"? Nobody understands "wreaks" anymore. It's no longer a productive rule. Likewise, IP and (arguably) TCP protocol details aren't productive either, except in specialized cases, or on closed networks. The internet isn't just running in debug mode. It's also flinging around lots of bytes that do nothing other than reflect past aspects of its evolution, like an embryo's tail and gills.