Marvin Remembers the Serial Number of Every Car. The Barrier Only Reads the Plate.
Marvin the Paranoid Android has a brain the size of a planet. He has been parking cars for thirty-seven million years. He remembers the serial number of every car he has ever parked — the chassis number, the engine number, the manufacturing date, the full provenance of every vehicle. Perfect recall. Complete Gutenberg knowledge of every physical artifact that has passed through his care.
The barrier reads the licence plate.
That is all it needs. The plate is the semantic identifier — the human-readable name that the licensing authority assigned, that you hold across every vehicle you ever own, that the resolver maps to the current car when needed. The serial number is the Gutenberg identifier — fixed at manufacture, opaque to humans, unique to the specific physical object.
The barrier is correctly scoped. Marvin is incorrectly deployed. Everything else Marvin knows is overhead with no consumer.
Enter and Exit
You enter the parking lot. The barrier scanner reads your plate. The system looks up the plate, assigns a space, logs the entry time. The barrier opens.
You exit. The barrier scanner reads your plate. The system looks up the plate, calculates the duration, charges the fee. The barrier opens.
The serial number never appears. The system does not need to know which specific chassis you are driving. It needs to know which space to assign and how long you stayed. The plate is sufficient for the entire transaction. The Gutenberg reality underneath — this specific manufactured object — is correctly ignored.
This is the DNS model applied to car parks. The semantic name (the plate) is what the user holds. The resolver (the licensing authority) maps it to the Gutenberg reality (the specific vehicle) when that mapping is actually needed — for insurance, for recalls, for police. Not for parking. Parking only needed the name.
The Serial Number Failures
Every system that makes users work with serial numbers instead of names is asking Marvin to announce the chassis number at the barrier.
The support system that stores your full device history, your purchase date, your warranty status, your repair record — and asks you to read out the serial number to find your account. The serial number is the Gutenberg identifier the system uses internally. The email address or the account name is the plate. The support agent should be able to find you by name. Instead the system makes you flip the device over and squint at the 22-character string on the back.
The database that stores everything under a UUID and surfaces the UUID in error messages, URLs, and API responses. User 3f7a8b2c-de91-4f05-a823-7d6e9c1b0f4e has no payment method on file. The UUID is the serial number — fixed at creation, opaque to humans, correct at the Gutenberg layer. The user’s name is the plate. The error message should say the name.
The URL that contains /items/176df256-de57-4a05-b9fd-1bcef35c194d and nothing else. The UUID is the row’s serial number. A slug — your-first-post, order-2026-001 — is the plate. The slug is what the human reads, remembers, and types. The serial number is what the database uses to find the row. Keep the serial number in the database. Put the plate in the URL.
The git commit that is referenced by its SHA in an error message. Commit a3f7b9d2 introduced this regression. The SHA is the serial number — content-addressed, immutable, Gutenberg. The branch name or the tag is the plate. Reference the meaning. The SHA lives in the log.
Hide the Serial Number, Expose the Plate
The principle is precise: hide the implementation, expose the seam.
The serial number is the implementation — the Gutenberg identity that the system uses to track the physical artifact. The plate is the seam — the stable semantic identifier that the human holds across every substrate change.
This is not a contradiction of Parnas’s information hiding. Parnas said hide what is likely to change behind a stable interface. The serial number is stable (it never changes) but it is also opaque, not human-meaningful, and not what the user should need to know. The plate is also stable — and it is meaningful, readable, and portable. Hide the serial number, expose the plate.
When you get a new car, the plate stays with you. The serial number belongs to the car. The resolver (the DVLA, the RDW, the DMV) maps plate to serial number when the mapping is needed. Your number is still yours even after the vehicle changes. The substrate swaps. The plate stays.
The system that exposes serial numbers is the system that tied identity to substrate. When the substrate changes — new device, new row, new deployment — the identity breaks. The system that exposes plates survives substrate changes, because the plate is above the waterline and the substrate is below it.
Don’t Make Me Think. Don’t Take Me For a Ride.
Krug’s principle and the parking lot principle are the same demand from the two sides of the seam.
Don’t Make Me Think is the Use side saying: a good interface does not tax me to parse it. The barrier should read the plate, not ask me to recite the serial number. The URL should contain the slug, not the UUID. The error message should name the user, not the row identifier.
Don’t Take Me For a Ride is the same person refusing to be tracked at a layer they did not choose. The system that exposes serial numbers to users is not serving the user — it is serving the system’s internal convenience. The user pays the cognitive tax of decoding the Gutenberg identifier so the system does not have to maintain a resolver.
Both failures are the operator seizing the wheel. One steals attention, the other steals the plate. The good interface and the held seam are the same refusal: respect the reader, expose the name, keep the serial number where it belongs — inside the system, out of the user’s hands.
The barrier reads the plate. Marvin remembers the serial number. The barrier is correctly scoped.
This post is part of the Gutenberg/Semantic series. Related: UUIDs Are Not Names on Gutenberg identifiers leaking into the semantic layer, Gutenberg: Your Next Phone Will Be a Different Make on a Different Carrier. Your Number Is Still Yours. on the plate that outlasts the vehicle, and I Didn’t See the Bore-Out Coming. Don’t Ask Me to Park Cars. on Marvin’s thirty-seven million years at the barrier.