Wednesday, October 3, 2007

Long walk with Peretz, long discussion about complex systems. Work with them all day, think about them quite a lot. The ones I work with have mostly been designed fairly carefully, that is, they're complex because nobody could figure out how to make them simpler. Peretz thinks it probably makes sense to see such systems as distributed on a continuum ranging from totally designed to ones that just happened to shake out that way. The emergent ones still have the appearance of being designed due to implementation constraints.

Society is an interesting example. Mostly just how it happened to end up, all kinds of funny overlaid design. Primary constraints all derivative of it having to be run on top of humans. It might be tempting to think that how it works is that each human has a complete model of the society in their head, including their role in it, and just acts in accord with the model. Obviously, this can't be what's happening at all. The other day, I was talking to somebody who imagined the DNS system working like this- basically he thought when a change was made to an authoritative name server, the change was pushed out to all the other name servers in the world, so all of them had a pretty current & complete representation of all domain name to ip address mappings. It's not totally implausible, Internet routing, for example, works pretty much like this. In the case of domain names, though, there are so many that requiring each DNS server to store them all locally isn't remotely feasible. There are other considerations barring this design, of course, bandwidth, etc. In the case of DNS, it's easy to explain how it's actually implemented (distributed hierarchical database, servers doing lookup query higher up servers for what the authoritative servers are, ask one of those servers for the address, save the answers locally for a specified time to avoid doing too many lookups), with society it's a lot harder.

No comments: