In the School for Poetic Computation's Machine Language class, we considered how a bit is a boundary: computers cannot handle ambiguity. Rather, they only 'know' what you tell them through specific inputs at that point in time. This is contrasted with how humans operate, where the actions we take are necessarily preceded by all of our previous experiences that led us there. All of our prior motivations and prejudices and confusions, which we know implicitly yet can't really see, culminate in whatever the moment may make of us.
This abstraction away from the greater context of things, this lack of unpredictable and overwhelming intentions and stimuli, gives software its power. It allows programs to scale and handle varied requests without requiring information about their specificities, classifying and crystallizing the fuzzy range of human behaviors into strict flows of logic. Still, it is oftentimes useful for a piece of code to know details like where and who a request is coming from, and to have an awareness of things taking too long or retain a connection to other parts of code.
In the Go-lang langage, one way this comes up is through the native context package. The context.Context type can be used to pass signals and information through a chain of function calls, so that it may be possible for one block of code to glean a bit of greater awareness of its counterparts. I have come to love using this package, the elegance it inspires both in thinking about code and the code itself. As part of class, I wanted to explore this package in a more playful way and created a couple explorations.
A good friend of mine once described our work as software engineers as the management of complexity; I have yet to find a more apt description. At work, I am always trying to neatly tie two tiny threads together or to cleanly write a basic function without letting the imprecision of its surrounding apparatus take over. As much as we engineers may try, we can't escape the tedious, entangled, mess of life. Most code is connected to something outside of itself, at the very least by the fact that our brains are likely elsewhere as we write it. Go-lang's context package is simply an acceptance of this.