<style>
.reveal {
font-size: 24px;
}
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
text-transform: none;
}
</style>
# Boxes in boxes in boxes
![Cosmic-Nesting-Boxes-Look-from-the-outside-in-e1538020123683](https://hackmd.io/_uploads/SJ8l-_prp.jpg)
)
---
## Don't we like boxes?
- Encoding and decoding data across programs and systems is a "solved problem."
- Why should we still care?
---
## Context time
- Binary data
- Text data
- Packing and encoding
- Unpacking and decoding
---
### Binary Data
- Videos
- Images (JPEG, PNG)
- Programs (on your desktop, laptop, phone everywhere)
```sh
$ xxd /usr/bin/echo | head -n 8
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............
00000010: 0300 3e00 0100 0000 c02f 0000 0000 0000 ..>....../......
00000020: 4000 0000 0000 0000 b081 0000 0000 0000 @...............
00000030: 0000 0000 4000 3800 0d00 4000 1e00 1d00 ....@.8...@.....
00000040: 0600 0000 0400 0000 4000 0000 0000 0000 ........@.......
00000050: 4000 0000 0000 0000 4000 0000 0000 0000 @.......@.......
00000060: d802 0000 0000 0000 d802 0000 0000 0000 ................
00000070: 0800 0000 0000 0000 0300 0000 0400 0000 ................
$ xxd cool_image.png | head -n 8
00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR
00000010: 0000 00c0 0000 0092 0806 0000 0013 9ac5 ................
00000020: fb00 0000 0467 414d 4100 00b1 8f0b fc61 .....gAMA......a
00000030: 0500 000a 4969 4343 5073 5247 4220 4945 ....IiCCPsRGB IE
00000040: 4336 3139 3636 2d32 2e31 0000 4889 9d53 C61966-2.1..H..S
00000050: 7758 93f7 163e dff7 650f 5642 d8f0 b197 wX...>..e.VB....
00000060: 6c81 0022 23ac 08c8 1059 a210 9200 6184 l.."#....Y....a.
00000070: 1012 40c5 8588 0a56 1415 119c 4855 c482 ..@....V....HU..
```
---
### Text Data
`This is textual data.`
```
<html>
<body>
<p>This is textual data.</p>
</body>
</html>
```
---
### The difference?
What makes them different? Encoding!
---
### Packing into boxes
To JSON, a byte number becomes a two-byte string.
```mermaid
flowchart LR
RawMemory1[-1] --> JSON['-1']
JSON --> RawMemory2['-' '-1']
```
---
### Unpacking from boxes
From JSON, a string must be turned into two bytes.
```mermaid
flowchart LR
JSON['-1'] --> RawMemory2['-' '-1']
RawMemory2 -->|unpack| RawMemory1[-1]
```
---
### Binary data in text data
![Cosmic-Nesting-Boxes-Look-from-the-outside-in-e1538020123683](https://hackmd.io/_uploads/SJ8l-_prp.jpg)
)
---
### Binary data in text data: side-stepping the problem
- Network protocols need to send data
- Cannot just send program state over the wire
- Agnostic formats needed to exchange between different languages and runtimes
- Even in JSON text data we need to safely string binary data. Enter [base64 encoding](https://en.wikipedia.org/wiki/Base64).
- But at what cost? More and more packing into "boxes" of encoding.
```json
{
"result": "ok",
"files": [
{
"filename": "cool_image.png",
"hash": {
"type": "sha256",
"value": "e5d683500f9afd30f5006c501e7fe849280457bff7465026050d83a8904c2ec7"
},
"last_updated": 1701850182,
"data": "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"
}
]
}
```
---
### Why does it matter?
- Performance, [generally](https://raw.githubusercontent.com/intarchboard/e-impact-workshop-public/main/papers/Moran-Birkholz-Bormann_Sustainability-considerations-for-networking-equipment.pdf.pdf) and for [specific, important use-cases](https://arxiv.org/abs/2207.07486)
- Simplicity
- Safety
- [Security](https://bishopfox.com/blog/json-interoperability-vulnerabilities)
---
## Current solutions, current challenges
- Current solutions:
- JSON
- XML
- YAML
- Encode binary data in text data
- Challenges:
- Parsers that require lots of memory
- Data payloads are much larger
- Nested encodings with
- increase resource use
- obscure and hide data
---
## Future solutions, new benefits
- Future solutions:
- CBOR
- FlatBuffers
- No nested encoding, so no more
- emory-intensive parsers
- complex parsing rules
- obscuring data formats
---
## Conclusion
- Use [CBOR](https://cbor.io/)!
---
{"title":"Why not JSON? Why CBOR?","slideOptions":"{\"center\":false,\"theme\":\"white\"}","contributors":"[{\"id\":\"ff93a3b6-7ff9-4903-9911-f9f50514eaab\",\"add\":46312,\"del\":21299}]"}