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 20 ways a pasted JSON breaks
Unquoted keys, single quotes, trailing commas, Python literals, comments, a truncated line: the JSON repair steps, from the engine, and where each comes from.