navigation · epigraphy of the sea
Some Lights Are Only Themselves
At night a lighthouse has no shape. It has no colour you can trust at ten miles and no tower you can see. It has a rhythm, and the rhythm is its name. Here are the lights of one real stretch of coast, at their true bearings, keeping the exact timings their own entry prints.
…
Every light above is a real record. Its position is the position printed in the list,
its bearing is measured from the observer's position given under the table, and its
flashing is the schedule its own entry states, second by second. Nothing here is
stylised: when a light shows fl. 0.5s, ec. 9.5s, it is lit for half a
second and dark for nine and a half. Where the list gives a period but no breakdown of
it, the table says class instead of
printed and the flash length is reconstructed from what the
rhythm class means, which is a guess at the shape and not at the period.
The seen to column is worth a look. A light's advertised range is a promise about its lamp, not about the planet: past a certain distance the curve of the Earth takes it away whatever its candlepower. The column shows the smaller of the two, computed from the light's charted height and an eye five metres above the water. On the second horizon there is a light advertised at fifty-four nautical miles that the Earth cuts to under seventeen.
That is the whole trick of a coast at night. A ship cannot see shape, so the shore
speaks in rhythm. The vocabulary is small and old: a light is fixed if it never
changes, flashing if the dark is longer than the light,
occulting if the light is longer than the dark, isophase if they are
equal, quick if it flashes about once a second, and it may come in groups, two
at a time or three, with a period after which the whole pattern repeats. Written down,
that is a character: Fl.(3)W. 15s is three white flashes every
fifteen seconds, and somewhere on the earth there is a tower that does exactly that and
a book that says which one.
Time one
Here is a light with its name withheld. It is a real entry from the list. Watch it, count the flashes in a burst, then time how long until the burst comes round again, and pick its character. There is a stopwatch if you want one, but a watch and a count is all a mariner has ever had.
watch: not started
The stopwatch reports the mean interval between your taps, which is what a mariner reads off a watch after counting several cycles. Your error is yours: this page measures no one else and claims nothing about what anybody else can do.
The book, and how small its alphabet is
The National Geospatial-Intelligence Agency publishes the List of Lights in seven volumes covering the coasts of the world outside the United States, and publishes it as data rather than only as a book. Fetched whole and parsed, it gives … records, of which … are lights with a position and a readable character. Those lights carry … distinct characters between them.
Forty thousand lights and about fifteen hundred ways to blink. The alphabet is small because it is built out of round numbers: almost every period is an integer number of seconds, and the integers people choose are not spread evenly.
Small alphabet, forty thousand words to spell. Collisions are guaranteed somewhere. The question that matters is whether they are guaranteed here, close enough that one ship can see both at once.
How far away is your twin?
Take a light, and search outward until you find another light a mariner could not tell from it: same rhythm, same figure in the group, same period as printed, and a colour they have in common. That distance is the light's margin. Do it for all … of them and the answer is not one distribution but two, laid on top of each other.
The left hump is not a scandal. It is the system working. A great many of the lights with a twin at a few hundred metres are leading lights: two lights set behind one another so that a ship sees them in line only when it is in the safe channel. They are meant to be a pair, and they are frequently given the same character on purpose, because the message is the alignment and not the identity.
Which is exactly what the standard says. US Chart No. 1, the joint NOAA and NGA key to chart symbols, introduces the international buoyage system with a sentence that turns out to be the whole story:
Where in force, the IALA System applies to all fixed and floating marks except landfall lights, leading lights and marks, sectored lights and major floating lights.
and a note in its section on lights:
Note: Minor lights, fixed and floating, usually conform to IALA Maritime Buoyage System characteristics.
Read together, those two sentences say the world's lights are running two vocabularies at once. In one, a character is a place: this flash belongs to this tower and to no other, and a second tower using it is a hazard. In the other, a character is a thing: quick flashing in groups of six with a long flash on the end means deep water lies to the south of me, and every mark in the world that means that is supposed to say it the same way. In the second vocabulary, repetition is not a failure. It is the point.
The standard draws that line by category, in prose. The question this page can actually settle is whether the line is visible in the positions alone.
The test, and the null it is measured against
Count the lights that have at least one confusable light within ten kilometres. That number on its own means nothing, because lights cluster in harbours and harbours are where lights are. So it is compared against a world that is identical in every respect except one: the same lights, in the same positions, carrying the same characters, but with the characters dealt out at random among them. Do that a thousand times and you have a distribution of what accident produces.
The dealing can be done more or less locally, and the ladder matters. Shuffling the whole world lets a Norwegian character land in Java. Shuffling inside one country holds national habit fixed. The strictest rung shuffles only inside a one degree box, about a hundred kilometres on a side, so no regional fashion can produce the effect.
…
So confusable lights do sit closer together than accident allows, and the effect survives the strictest shuffle. Now take the corpus apart along the line the standard drew.
…
The sectored lights are worth pausing on, because the instrument is biased against the result. Two lights count as confusable here if their colour sets overlap, since a light showing white to seaward and red over a shoal looks like a plain white light from inside the white sector. That rule makes a three-colour light easier to match than a one-colour light, so a sectored light should collide more often for a purely mechanical reason. It collides less.
The great lights
The lights a landfall is made on, the ones with twenty and thirty mile ranges, are the purest case of the first vocabulary. A light that can be seen for thirty miles is speaking to a ship that has crossed an ocean and needs to know which coast this is.
…
The same question, asked of a different book
Everything above rests on one compilation by one agency, read through one grammar written for this page, with the leading lights picked out by a regular expression over names. Any of those three could be producing the result on its own. So the whole test was run again on a corpus that shares none of them: OpenStreetMap's seamark data, compiled by volunteers, covering the United States that Pub 110 to 116 leave out, storing the character in separate tags that were never a string to be parsed, and carrying seamark:light:category as a tag, so the leading lights there are labelled by other people rather than inferred by me. It holds … lights, including … inside a box around the contiguous United States.
…
What the second corpus is not able to settle
- Sectored lights. OpenStreetMap stores a sector light as numbered sub-keys, seamark:light:1:colour and so on, and the query used here selects on the unnumbered key, so a sectored light arrives carrying only its primary colour. Only … lights in the replication corpus have two colours at all. That test is not underpowered, it is mis-addressed, and it is reported as untested rather than counted as agreement.
- The two corpora are not sampling the same population. The NGA volumes list the aids a deep sea navigator needs; OpenStreetMap maps whatever a volunteer has walked past, which is far more small harbour work. The median light in the replication corpus has a confusable twin … away, against … in the first. Where the two disagree, neither is wrong about its own book, and this page does not adjudicate between them.
Two predictions, written down first, and what happened to them
The predictions for this page were committed to the repository before the analysis script existed, which is checkable: git log on PREREGISTRATION.md against analyze.mjs. Both of the substantive ones came out wrong, in different and useful ways.
The one that was wrong about the world
…
…
…
The one that was wrong about my own arithmetic
…
The pairs that are left
…
…
Both lights above are drawn from their own entries and started at the same instant, which is the one thing that is not real: two lights in the world are not phase locked, so in practice they drift against each other and a patient observer can sometimes separate them by watching for a long time. What cannot be separated is the character, which is what the book gives you and what a tired mate on a wet bridge wing is working from.
The check
The grammar is tested rather than trusted. Every characteristic in the corpus is
parsed into a structure and then printed back out in the list's own notation, and the
round trip must be the identity. Across
… characteristics there are
0 token-level failures. The residue is
22 records where NGA's own punctuation differs from its
usual form, such as Q(6)+L.Fl.W. for Q.(6)+L.Fl.W. and
Fl.(2).R. for Fl.(2)R., all of which parse to the same
character.
That test only covers what the parser accepted, so the accounting of what it did not accept has to be separate and it is: … records of … are refused outright and listed by frequency in build-report.json. An earlier draft of this page said that number was zero. It was not: the parser was returning failures with a status field the build script read as "blank", so 234 real refusals were being filed as empty records. The bug changed no result, because those rows were excluded either way and the corpus is the same 40,559 lights before and after, but it did mean the page was printing a perfect score it had not earned. The fix is in engine.mjs with a comment saying what it cost.
The whole pipeline runs from the committed raw JSON: build.mjs makes the corpus, analyze.mjs runs every test at a fixed seed, scenes.mjs makes everything this page draws. The verifier verify-some-lights-are-only-themselves.mjs re-derives the numbers printed above from the artifacts and drives the page in a real browser.
What this does not show, and what it got wrong on the way
- The United States is missing. Pub 110 to 116 cover foreign coasts; American aids are in the Coast Guard's own Light List, which is not in this corpus. Only … records here sit under a United States heading. Nothing on this page is a claim about American waters.
- Land is not modelled. A light is drawn on the horizon if the observer is inside both its advertised range and its geographic range, computed from the light's charted height and an eye five metres above the water. A headland in the way would hide it and this calculation would not know.
- Confusable is a rule, not a fact about perception. Two lights count as confusable here when the lantern count, rhythm, group figures and period all match as printed and their colours overlap. A real mariner also has bearing, a chart, a radar and a nervous system. The rule is stated once and applied everywhere, and the page reports what it produces.
- Some records are incomplete. … lights state a rhythm that has a period but print no period. Their character is not fully known, so the question cannot be answered for them and they are excluded and counted. A separate … rows are radar beacons, listed in the same column as a bare Morse letter with no colour, and are not lights at all, and … are direction lights whose character column names only the colours while the rhythms sit in the remarks, one per arc of bearing, so there is no single character to compare.
- A first pass had a data artifact at the top of its ranking. Before the rule
above existed, the two most locally clustered characters in the corpus were
Fl.G.andFl.W.with no period at all, which is not a character but an omission, and it clusters because the habit of omitting clusters by administration. Naming that is what produced the rule. - The leading-light classifier is a regular expression over names (…), and it is mine, not the source's. It is cross-checked against an independent structural signature: NGA writes a rear light's name as a distance and bearing from its front. Of the 2,829 names carrying that signature, 2,781 are also caught by the regex, and the 48 that are not turn out to be positions given relative to a landmark rather than leading lights.
- The strictest null has limited room. Shuffling inside one degree boxes leaves … boxes holding a single light, which cannot be shuffled at all. That pulls the null toward the real value, so the one degree row understates the effect rather than inflating it.
- Power, stated plainly. The test on major lights with the leading pairs removed has … observed collisions against a null mean of …. That can rule out a large excess. It cannot distinguish mild avoidance from none, and this page does not claim it can.