I’ve had the opportunity to spend about 20 years programming with an unusual level of freedom to improve the design of code I worked on. Too often, outside constraints force us to simply live with poor designs. We get a bitter education about how frustrating our favorite mistakes can be, but we don’t get enough opportunities to make exciting new mistakes. I think I’ve gotten the opportunity to curse past-me in plenty of innovative ways.

I’ve also had the chance to play in a bunch of different sandboxes, from low-level systems programming to sky-high type theory. All the while, learning from the experiences of the wide range of other people I’ve worked with. Most recently, I spent most of a decade getting a Ph.D. that allowed me to spend an unusual amount of time (a) thinking hard about how to design programs and programming languages, (b) reading a lot of good work on software design, and (c) actually writing reasonably quality software. (Anyone who’s dealt with “academic code” knows what I mean by that last one.)

Right now, I am funemployed exploring the possibility of starting a company. I might have more to say about that later, but if you’re dissatisfied with the state of our tools, let me just say: me too. If you think you could use a software design consultant, get in touch. Otherwise, I really do appreciate everyone who supports my Patreon. This book won’t happen without support from people like you. Thanks! :)