Kevin McDonald
kmcd.dev · Personal blog · on HN since 2024
Kevin McDonald writes about HTTP protocol history, gRPC, Protobuf and networking tools, often building them from scratch in Go.
What HN saysHN links it for gRPC and HTTP/3 posts; one commenter cites his Protobuf unknown fields post in a technical discussion.
15HN people shared it
1linked it in comments
26stories submitted
450story points
3 months agolast shared
2024people per year2026
Most-shared posts
- 1Y'all are sleeping on HTTP/33 people · 43 points · first shared 2024 · 16 comments on HN
- 2HTTP/1.0 from Scratch3 people · 10 points · first shared 2024 · 1 comments on HN
- 3gRPC over HTTP/33 people · 9 points · first shared 2024 · 1 comments on HN
- 4HTTP/0.9 from Scratch (2024)2 people · 7 points · first shared 2024 · discussion on HN
- 5gRPC: The Bad Parts1 people · 228 points · first shared 2024 · 223 comments on HN
- 6gRPC: The Ugly Parts1 people · 111 points · first shared 2024 · 84 comments on HN
- 7Traceroute Tool from Scratch in Go1 people · 19 points · first shared 2025 · 1 comments on HN
- 8gRPC: The Good Parts1 people · 5 points · first shared 2024 · discussion on HN
- 9Beating Go's Encoding/JSON with Schema-Guided ProtoJSON1 people · 2 points · first shared 2026 · discussion on HN
- 10gRPC-Web Should Have Fixed gRPC1 people · 2 points · first shared 2026 · discussion on HN
- 11Working with Protobuf in 20241 people · 2 points · first shared 2024 · 1 comments on HN
- 12FauxRPC: Easily turn protobufs into fake gRPC, gRPC-Web, Connect, and REST serv1 people · 2 points · first shared 2024 · discussion on HN
- 13How I Got Thousands of Mastodon Users to Whistle at Their Screens1 people · 2 points · first shared 2025 · discussion on HN
- 14Morse Code1 people · 2 points · first shared 2025 · 1 comments on HN
- 15The CPU Cost of Protobuf Varints in Go1 people · 2 points · first shared 2026 · discussion on HN
What HN people wrote when they linked it
PessimalDecimal · 2026-02-14
My guess is there's more to that story than just "protobufs don't forward unknown fields" because that's not how they work be default. Take a look at https://protobuf.dev/programming-guides/proto3/#unknowns.
https://kmcd.dev/posts/protobuf-unknown-fields/ discusses the scenario you're hinting at.
It's possible in the story you mention that each of those ~20 internal protos were different messages, and each hop between backends was translating data between nearly identical schemas. In that case, they'd all need to be updated to transport that data. But that's different and the result of those engineers' choice for how to structure their service definitions.