Add content/shard/interface.md
This commit is contained in:
parent
80c79698e3
commit
1a18c04619
1 changed files with 41 additions and 0 deletions
41
content/shard/interface.md
Normal file
41
content/shard/interface.md
Normal file
|
@ -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: 
|
||||||
|
Ref: https://www.oilshell.org/blog/2022/02/diagrams.html
|
||||||
|
Ref: https://www.ietf.org/rfc/rfc791.txt
|
Loading…
Add table
Reference in a new issue