diff --git a/content/shard/interface.md b/content/shard/interface.md new file mode 100644 index 0000000..defd9ff --- /dev/null +++ b/content/shard/interface.md @@ -0,0 +1,41 @@ ++++ +title = "Interface" +glassblowers = ["cristobalsciutto.md"] ++++ + +Infrastructure accretes in the form of layers of abstractions. Each layer +builds on top of the prior one, using its metaphors to bootstrap more complex +ideas. This conceptual leap-frogging permits one to not work from scratch, and +as such multiply efforts. Critically, however, it becomes imperative to design +layers of infrastructure that retain an expansive space of possibilities. + +Deeper layers of the infrastructural stack evolve at slower paces than higher +layers, simply because as more infrastructure gets stacked on top, changing too +quickly may cause the whole edifice to collapse. In other words, the more +others depend on you, the harder change becomes. + +In order to change without affecting those that depend on you, it becomes +beneficial to define an *interface*, the contract of what you offer. As long as +the interface is consistent, it does not matter *how* the promise is fulfilled. +This is the positive side of a black box; you're able to swap it out as long as +the same things come out, given the same things going in. + +If M different users interact with N different providers separately, each of +the MxN interfaces must be designed. If an intermediate standard is chosen, +then the M users interact with one standard, as do the N providers. Therefore, +only M+N interfaces are designed. The standard operates as a narrow waist, +reducing complexity. The prototypical example of a narrow waist is the Internet +Protocol (IP). Email, hypertext, domain resolutions, and more all interact via +the IP, which itself is implemented via copper cable, fibre optic, or radio. + +Text and bytes are the two most important narrow waists in computing. The +computer uses raw bytes as a narrow waist between a variety of media (images, +text, video, 3D models, etc) and a variety of transmission and compression +techniques. An HTTP message transmits arbitrary data in the form of text or +bytes between a client and server. It does not matter what is in the payload. +Similarly, gzip can be used to encode any arbitrary sequence of bytes, +regardless if the file is a sequence of text or the RGB of an image. + +Ref: ![](bib:7817cc0f-a538-4c1d-872e-b2bbb874c094) +Ref: https://www.oilshell.org/blog/2022/02/diagrams.html +Ref: https://www.ietf.org/rfc/rfc791.txt \ No newline at end of file