Announcing The Programmer's Compendium

Posted on 2017-02-08

As part of my plan to branch into media beyond screencasts, The Programmer's Compendium launches today. There's one article right now, Types, which serves as an overview of static and dynamic type system issues for those who aren't already experts in that topic.

Six months ago, I did an informal poll about what people find confusing and got a few hundred replies. "Strong/weak" came in second, which is why I began with this Types article. My goal for the compendium is to go down down the list, more or less, trying to explain these things as frankly as possible. (Though that's been the goal of everything that I've done with Destroy All Software.)

The compendium is a reference work, in that the articles are written to stand alone. Each article is made of sections that can also stand alone and are individually linkable. However, the articles are also written to be read beginning-to-end, with the sections forming a progression from basic issues to more complex and subtle ones.

Destroy All Software is a for-profit company and has made up the majority of my income for the last five years, so the compendium won't be free. However, it also won't be simply buried behind a paywall. I've implemented a scheme that should strike a middle ground.

When DAS subscribers view the articles, the URLs will contain keys specific to their account. They can give those links to anyone, including posting them in public forums. Anyone clicking the link will be able to view the article, whether or not they're subscribed or even logged in. (The keys are randomly generated when subscribers visit articles, so no one outside of DAS can take a key and determine the user who generated it.)

My first goal here is to provide a reference work to demystify confusing topics for my subscribers. However, I have a second goal that's a bit more personal. I hope that compendium articles will be dropped into Internet arguments, ending back-and-forths where people are simply talking past each other.

For example, programmers often argue about "strong" and "weak" types, which are extremely ambiguous and have several different meanings. Usually, these arguments happen because neither side realizes that they've each chosen one of many possible (but conflicting) definitions. Any DAS subscriber will be able to load up the Types section on Strong and weak typing, then drop the link into that discussion. Hopefully, that stops a fruitless argument.