Software engineering is about division of labor

  • Between users and machines...
  • Between clients and servers...
  • Between different programmers...
  • Between different modules...

Tension lies between notions of abstraction and composition

  • Abstraction (which embodies division)
  • Composition (which embodies harmony)

PL theory is "advancing linguistic solutions to the contradiction between abstraction and composition" - Reynolds, 1983.

This is a beautiful quote from a presentation by Jon Sterling.

I am fascinated by PL theory, type theory, and the idea of the computational trilogy, and this informs how I think about my work as a professional software developer.

My goal is to pull useful abstractions from the fields of logic, philosophy, ethics, and artificial intelligence (at least in my particular niche as a research engineer) and make them available both to my colleagues at work as well as to interested others in the open source and general public.

Hopefully, the decision to publish both my raw and refined thoughts via this mdbook will help motivate me to keep articulating, editing, and learning indefinitely.