I've been circling around the topic of agency for a few decades now. I wrote a dissertation on how metaphors of agency are baked into computers, programming languages, and the technical language engineers use to talk about them. (See Agency at the Media Lab).
I glommed onto the topic of agency in graduate school, and wrote a dissertation that explored its relationship to computation. That work, while it garnered some praise, I have thought of mostly as a failure. It opened up some interesting questions, but didn't really provide much in the way of answers. It tried to do too many different things (which might indicate problems with my own agency).
Something I wrote about in my dissertation, as something of a preliminary to animacy and agency. I was heavily influenced by Lakoff and Johnson's well-known metaphor theory, which blew my mind in such a way that I can't quite remember what it was like to not have a constant reminder in my head that our most abstract concepts are built out of useful culturally evolved mappings to and from the physical embodied world.
Computer programming environments for learning should make it easy to create worlds of responsive and autonomous objects, such as video games or simulations of animal behavior. But building such worlds remains difficult, partly because the models and metaphors underlying traditional programming languages are not particularly suited to the task. This dissertation investigates new metaphors, environments, and languages that make possible new ways to create programs – and, more broadly, new ways to think about programs. In particular, it introduces the idea of programming with "agents" as a means to help people create worlds involving responsive, interacting objects. In this context, an agent is a simple mechanism intended to be understood through anthropomorphic metaphors and endowed with certain lifelike properties such as autonomy, purposefulness, and emotional state. Complex behavior is achieved by combining simple agents into more complex structures. While the agent metaphor enables new ways of thinking about programming, it also raises new problems such as inter-agent conflict and new tasks such as making the activity of a complex society of agents understandable to the user. To explore these ideas, a visual programming environment called LiveWorld has been developed that supports the creation of agent-based models, along with a series of agent languages that operate in this world.