The Cartographer's Notebook
A map begins before the finished line. It begins with a wet boot, an uncertain ridge, and a mark made before the ground has agreed to be named. The notebook is useful because it keeps that uncertainty available for the next walk.
Marks before maps
The cartographer does not discover a finished landscape. A shore changes with the tide, a path disappears under grass, and a local name can contain two directions at once. The first duty of the notebook is to separate what was seen from what was concluded.
The margin can hold landmark.Revise(note) without confusing a later revision
with the first mark on the page.
A small coordinate
Coordinates are modest claims. They do not replace the hill or the estuary; they give a later reader a way to return and disagree precisely.
type Landmark struct {
Name string
East int
North int
}
func Place(name string, east, north int) Landmark {
return Landmark{Name: name, East: east, North: north}
}
The code makes the claim inspectable: a name is attached to a position, and a position can be checked against the next survey.
The route in the margin
An unlabelled block can hold a route whose value is its arrangement rather than its language:
shore -> birch grove -> ridge -> abandoned gate
The route is deliberately incomplete. A map should leave room for a bridge that has fallen, a boundary that has moved, or a path that only exists in dry weather.
Literal notation
Code remains literal publication text. A directive-looking line can appear in a cartographer's notebook without becoming a figure or changing the page:
@figure[src = "a-map-is-not-a-route.png"]
This keeps the distinction clear. The page can discuss source notation without executing it or giving it publication meaning.
A map that can be revised
A good map is not an argument that the land has been mastered. It is an open record of bearings, crossings, and corrections—an invitation to return with a different measure in hand.