This is Episode 14 of The Vibe Coder’s Guide to the Machine: computer science for a new generation.
Say you ask an assistant to pass each new order from your shop to a small payment stand-in, a local program playing the part of the service that takes the money, and to send it as JSON, the plain-text format of quotes and braces that most programs use to talk to each other. The first run stops with an error: “Object of type Decimal is not JSON serializable.” The assistant reads it, adds one line that turns the price into an ordinary number, and runs it again. A second error comes back, the same sentence with datetime in place of Decimal, so it adds a second line that turns the order’s date into text. The third run goes through. The stand-in receives the order, the sample in the test looks right, and the assistant reports that the feature works. Two refusals, two one-line fixes, and nothing left on the screen to worry about.
Only bytes cross from one program to another. The previous episode’s run showed that only bytes cross, and that what a number means is an agreement made in advance. That has a consequence for every value you send. Before a value can cross, the sending program has to write it out as text or bytes. This step is called serialization. The receiving program then has to read that text and build a value from it again, which is called parsing. A format like JSON has words for only some of the things a program can hold: numbers, text, lists, labelled groups of values, true and false, and an empty value. Anything else is refused, or it is quietly turned into the nearest thing the format does have a word for. So the error that disappeared was not the end of the question. It was where a value started to change, and “it parsed” only tells you the text was valid. It does not tell you the value came back.



