BYTES

📦 Serialization & Protobuf

Turning objects into bytes and back — Protobuf from the wire up, plus how it compares to JSON, Avro, MessagePack, and FlatBuffers

🧠 Start Here
The Foundations 🧠
Serialization 101

What serialization actually is, text vs binary, schema-ful vs schemaless, and the runtime-object-vs-wire-bytes split that everything else builds on.

Text vs Binary Schema Wire vs Runtime
Open Guide →
📦 Protobuf, Ground Up
The Language📝
Protobuf Basics

.proto syntax, messages, field numbers, scalar types, repeated, enum, and compiling with protoc.

.protoprotoc
Open Guide →
The Bytes🔬
The Wire Format

Tag = (field << 3) | type, varints, zigzag, length-delimited fields — decoded byte by byte.

VarintZigZagTLV
Open Guide →
Compatibility🧬
Schema Evolution

Add fields safely, never reuse a number, reserved, and why the field number — not the name — is the contract.

Backward-compatreserved
Open Guide →
⚖️ Choosing a Format
The Duel🥊
Protobuf vs JSON

Payload size, speed, readability, tooling, and the cases where plain JSON is still the right answer.

SizeSpeed
Open Guide →
The Field🗂️
Formats Compared

JSON, Protobuf, Avro, MessagePack, FlatBuffers — schema, binary, size, zero-copy, and where each one wins.

AvroMessagePackFlatBuffers
Open Guide →