Notes

Notes on the mess.

Short pieces on the situations the tools answer — where the text came from, why it broke, and what to do about it. Every number in them is measured by the engine when the page is built.

Sep 5, 2026

Why JSON.parse rejects the dict you copied out of a Python log

print() writes a dict with single quotes, True, False and None; JSON allows none of them. The four rules that differ, and how to fix the text you have.
Sep 5, 2026

Kibana Discover CSV export: the message column is JSON

A Discover export is a CSV with ECS columns and, in the message cell, the JSON your service logged, quotes doubled. How to read it as rows and open that cell.
Sep 5, 2026

Double-encoded JSON: how a payload ends up inside a string, and how to read it

SNS envelopes, SQS bodies, Kafka values, text columns, log fields: every hop that stores JSON as text adds a layer of backslashes. How to open them in place.
Sep 5, 2026

logfmt vs JSON logs: what a parser actually needs from a line

A timestamp, a level, a message and the key=value pairs after it turn text into records. Where logfmt and JSON lines fall short, and how a pasted log is read.
Sep 5, 2026

The ways a pasted JSON breaks

Unquoted keys, single quotes, trailing commas, Python literals, comments, a truncated line: where each way a pasted JSON breaks comes from, and the fix.
Sep 6, 2026

JSON from a model: the fence, the sentence after it, and the cut at max_tokens

A model answers with a sentence, a ```json fence and another sentence; JSON.parse refuses the first word. One fix unwraps it; a cut at max_tokens is closed.
Sep 6, 2026

SNS to SQS: why your Lambda calls JSON.parse twice

An SQS event’s body is the SNS envelope as a string; its Message is your event as a string. Where each layer comes from, and how the record opens in one click.
Sep 6, 2026

Fine-tuning JSONL: the four ways the upload refuses the file

A byte-order mark, a record pretty-printed over lines, a trailing comma, a .json array: why a fine-tuning file is refused, each named on its line and fixed.