reusing prior art
reusing prior art
a mature system's data model is shaped by its constraints, and most of those constraints are unstated. copying the model without working out which constraints are shared imports requirements the new system does not have.
what to separate
when reading prior art, separate three things:
- the problem it solves: usually stated, rarely the same in full.
- the constraints that shaped it: mostly unstated, and the actual content.
- the primitives it invented: small, portable, and the part worth taking.
a completed study is not a mandate to adopt. taking one field and rejecting two ideas is a normal outcome.
example: eBird checklists and a single sighting
eBird does not store sightings. it stores checklists: a sampling event (place, date, start time, protocol, duration, distance, number of observers) and the observations within it. the central field is all_species_reported, the complete-checklist flag. a complete checklist makes every unlisted species a recorded absence, and absence data is what the effort metadata exists for: without a denominator, observations cannot support population inference.
that envelope serves population science. an app for noticing a bird and keeping the evidence has a different problem, and its one essential property is that logging takes seconds, one-handed, outdoors. every checklist field traces to something real in eBird and none of it serves that app.
the primitives transfer:
- a stable species identifier. eBird's six-letter taxon codes (
norcar,amekes) make "the same bird a year apart" and "the same bird as someone else" joinable. a free-text name cannot be joined and does not survive the annual taxonomy splits and lumps. - partial identification.
spuh("hawk sp.") andslash("Greater/Lesser Scaup") record uncertainty instead of forcing a guess.
so the single-sighting record keeps its shape and gains one optional field: the free text stays as what the observer typed, and the code is the assertion, present only when they picked from a list. what was said and what was claimed are different facts, and only the second is joinable.
a constraint can be shared while its mechanism cannot. eBird obscures sensitive species' locations to 400 km² grid cells because of the cage-bird trade and nest disturbance. that risk applies to any bird record, but eBird's mechanism depends on owning the display layer, and an atproto record is public once written, so the obscuring has to happen before the write.
sources
- eBird data structure: the checklist/observation split and effort variables
- eBird protocols · taxonomy · sensitive species
- birds.place:
lexicons/place/birds/sighting.json
Did you enjoy this article?
Recommend it — Standard Reader surfaces well-loved writing to more readers across the network.